diff -Nru ostree-2020.7/aclocal.m4 ostree-2020.8/aclocal.m4 --- ostree-2020.7/aclocal.m4 2020-10-14 00:05:53.000000000 +0000 +++ ostree-2020.8/aclocal.m4 2020-11-17 15:31:54.000000000 +0000 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.16.1 -*- Autoconf -*- +# generated automatically by aclocal 1.16.2 -*- Autoconf -*- -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2020 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -112,7 +112,7 @@ CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$GLIB_LIBS $LIBS" dnl -dnl Now check if the installed GLIB is sufficiently new. (Also sanity +dnl Now check if the installed GLib is sufficiently new. (Also sanity dnl checks the results of pkg-config to some extent) dnl rm -f conf.glibtest @@ -142,7 +142,7 @@ glib_major_version, glib_minor_version, glib_micro_version); printf ("*** was found! If pkg-config was correct, then it is best\n"); printf ("*** to remove the old version of GLib. You may also be able to fix the error\n"); - printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** by modifying your LD_LIBRARY_PATH environment variable, or by editing\n"); printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); printf("*** required on your system.\n"); printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); @@ -152,7 +152,7 @@ (glib_minor_version != GLIB_MINOR_VERSION) || (glib_micro_version != GLIB_MICRO_VERSION)) { - printf("*** GLIB header files (version %d.%d.%d) do not match\n", + printf("*** GLib header files (version %d.%d.%d) do not match\n", GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION); printf("*** library (version %d.%d.%d)\n", glib_major_version, glib_minor_version, glib_micro_version); @@ -167,18 +167,18 @@ } else { - printf("\n*** An old version of GLIB (%u.%u.%u) was found.\n", + printf("\n*** An old version of GLib (%u.%u.%u) was found.\n", glib_major_version, glib_minor_version, glib_micro_version); - printf("*** You need a version of GLIB newer than %u.%u.%u. The latest version of\n", + printf("*** You need a version of GLib newer than %u.%u.%u. The latest version of\n", major, minor, micro); - printf("*** GLIB is always available from ftp://ftp.gtk.org.\n"); + printf("*** GLib is always available from ftp://ftp.gtk.org.\n"); printf("***\n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); - printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n"); + printf("*** of GLib, but you can also set the PKG_CONFIG environment to point to the\n"); printf("*** correct copy of pkg-config. (In this case, you will have to\n"); - printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** modify your LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time))\n"); } } @@ -201,7 +201,7 @@ if test -f conf.glibtest ; then : else - echo "*** Could not run GLIB test program, checking why..." + echo "*** Could not run GLib test program, checking why..." ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GLIB_CFLAGS" @@ -211,8 +211,8 @@ #include ], [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ], [ echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding GLIB or finding the wrong" - echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your" + echo "*** that the run-time linker is not finding GLib or finding the wrong" + echo "*** version of GLib. If it is not finding GLib, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" @@ -220,7 +220,7 @@ echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ], [ echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means GLIB is incorrectly installed."]) + echo "*** exact error that occurred. This usually means GLib is incorrectly installed."]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi @@ -702,7 +702,7 @@ ]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -# serial 11 (pkg-config-0.29.1) +# serial 12 (pkg-config-0.29.2) dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson @@ -744,7 +744,7 @@ dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], -[m4_define([PKG_MACROS_VERSION], [0.29.1]) +[m4_define([PKG_MACROS_VERSION], [0.29.2]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ @@ -845,7 +845,7 @@ AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no -AC_MSG_CHECKING([for $1]) +AC_MSG_CHECKING([for $2]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) @@ -855,11 +855,11 @@ See the pkg-config man page for more details.]) if test $pkg_failed = yes; then - AC_MSG_RESULT([no]) + AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` - else + else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs @@ -876,7 +876,7 @@ _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then - AC_MSG_RESULT([no]) + AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full @@ -977,75 +977,7 @@ AS_VAR_IF([$1], [""], [$5], [$4])dnl ])dnl PKG_CHECK_VAR -dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, -dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], -dnl [DESCRIPTION], [DEFAULT]) -dnl ------------------------------------------ -dnl -dnl Prepare a "--with-" configure option using the lowercase -dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and -dnl PKG_CHECK_MODULES in a single macro. -AC_DEFUN([PKG_WITH_MODULES], -[ -m4_pushdef([with_arg], m4_tolower([$1])) - -m4_pushdef([description], - [m4_default([$5], [build with ]with_arg[ support])]) - -m4_pushdef([def_arg], [m4_default([$6], [auto])]) -m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) -m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) - -m4_case(def_arg, - [yes],[m4_pushdef([with_without], [--without-]with_arg)], - [m4_pushdef([with_without],[--with-]with_arg)]) - -AC_ARG_WITH(with_arg, - AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, - [AS_TR_SH([with_]with_arg)=def_arg]) - -AS_CASE([$AS_TR_SH([with_]with_arg)], - [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], - [auto],[PKG_CHECK_MODULES([$1],[$2], - [m4_n([def_action_if_found]) $3], - [m4_n([def_action_if_not_found]) $4])]) - -m4_popdef([with_arg]) -m4_popdef([description]) -m4_popdef([def_arg]) - -])dnl PKG_WITH_MODULES - -dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, -dnl [DESCRIPTION], [DEFAULT]) -dnl ----------------------------------------------- -dnl -dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES -dnl check._[VARIABLE-PREFIX] is exported as make variable. -AC_DEFUN([PKG_HAVE_WITH_MODULES], -[ -PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) - -AM_CONDITIONAL([HAVE_][$1], - [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) -])dnl PKG_HAVE_WITH_MODULES - -dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, -dnl [DESCRIPTION], [DEFAULT]) -dnl ------------------------------------------------------ -dnl -dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after -dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make -dnl and preprocessor variable. -AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], -[ -PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) - -AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], - [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) -])dnl PKG_HAVE_DEFINE_WITH_MODULES - -# Copyright (C) 2002-2018 Free Software Foundation, Inc. +# Copyright (C) 2002-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1060,7 +992,7 @@ [am__api_version='1.16' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.16.1], [], +m4_if([$1], [1.16.2], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -1076,14 +1008,14 @@ # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.16.1])dnl +[AM_AUTOMAKE_VERSION([1.16.2])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1135,7 +1067,7 @@ # AM_COND_IF -*- Autoconf -*- -# Copyright (C) 2008-2018 Free Software Foundation, Inc. +# Copyright (C) 2008-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1172,7 +1104,7 @@ # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2018 Free Software Foundation, Inc. +# Copyright (C) 1997-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1203,7 +1135,7 @@ Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1394,7 +1326,7 @@ # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1433,7 +1365,9 @@ done if test $am_rc -ne 0; then AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments - for automatic dependency tracking. Try re-running configure with the + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE="gmake" (or whatever is + necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking).]) fi @@ -1460,7 +1394,7 @@ # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1657,7 +1591,7 @@ done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1678,7 +1612,7 @@ fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2018 Free Software Foundation, Inc. +# Copyright (C) 2003-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1700,7 +1634,7 @@ # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1735,7 +1669,7 @@ # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1778,7 +1712,7 @@ # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2018 Free Software Foundation, Inc. +# Copyright (C) 1997-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1817,7 +1751,7 @@ # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1846,7 +1780,7 @@ AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1893,7 +1827,7 @@ # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1912,7 +1846,7 @@ # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1993,7 +1927,7 @@ rm -f conftest.file ]) -# Copyright (C) 2009-2018 Free Software Foundation, Inc. +# Copyright (C) 2009-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -2053,7 +1987,7 @@ _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -2081,7 +2015,7 @@ INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2018 Free Software Foundation, Inc. +# Copyright (C) 2006-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -2100,7 +2034,7 @@ # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2018 Free Software Foundation, Inc. +# Copyright (C) 2004-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, Binary files /tmp/tmpZ6hOwy/vCbjpD3wBE/ostree-2020.7/apidoc/html/home.png and /tmp/tmpZ6hOwy/arN91uCVO9/ostree-2020.8/apidoc/html/home.png differ diff -Nru ostree-2020.7/apidoc/html/index.html ostree-2020.8/apidoc/html/index.html --- ostree-2020.7/apidoc/html/index.html 2020-10-14 00:06:16.000000000 +0000 +++ ostree-2020.8/apidoc/html/index.html 2020-11-17 15:38:22.000000000 +0000 @@ -6,7 +6,7 @@ - + @@ -14,7 +14,7 @@
-

for OSTree 2020.4

+

for OSTree 2020.8


@@ -71,6 +71,6 @@ +
Generated by GTK-Doc V1.33.0 \ No newline at end of file Binary files /tmp/tmpZ6hOwy/vCbjpD3wBE/ostree-2020.7/apidoc/html/left-insensitive.png and /tmp/tmpZ6hOwy/arN91uCVO9/ostree-2020.8/apidoc/html/left-insensitive.png differ Binary files /tmp/tmpZ6hOwy/vCbjpD3wBE/ostree-2020.7/apidoc/html/left.png and /tmp/tmpZ6hOwy/arN91uCVO9/ostree-2020.8/apidoc/html/left.png differ diff -Nru ostree-2020.7/apidoc/html/ostree-Core-repository-independent-functions.html ostree-2020.8/apidoc/html/ostree-Core-repository-independent-functions.html --- ostree-2020.7/apidoc/html/ostree-Core-repository-independent-functions.html 2020-10-14 00:06:16.000000000 +0000 +++ ostree-2020.8/apidoc/html/ostree-Core-repository-independent-functions.html 2020-11-17 15:38:22.000000000 +0000 @@ -8,7 +8,7 @@ - + @@ -46,7 +46,7 @@ -const GVariantType * +const GVariantType * ostree_metadata_variant_type () @@ -54,7 +54,7 @@ -gboolean +gboolean ostree_validate_checksum_string () @@ -62,7 +62,7 @@ -guchar * +guchar * ostree_checksum_to_bytes () @@ -70,7 +70,7 @@ -GVariant * +GVariant * ostree_checksum_to_bytes_v () @@ -109,14 +109,14 @@ -const guchar * +const guchar * ostree_checksum_bytes_peek () -const guchar * +const guchar * ostree_checksum_bytes_peek_validate () @@ -132,7 +132,7 @@ -guchar * +guchar * ostree_checksum_b64_to_bytes () @@ -164,7 +164,7 @@ -gboolean +gboolean ostree_validate_rev () @@ -172,7 +172,7 @@ -gboolean +gboolean ostree_validate_remote_name () @@ -180,7 +180,7 @@ -gboolean +gboolean ostree_parse_refspec () @@ -203,7 +203,7 @@ -guint +guint ostree_hash_object_name () @@ -211,7 +211,7 @@ -GVariant * +GVariant * ostree_object_name_serialize () @@ -243,7 +243,7 @@ -gboolean +gboolean ostree_content_stream_parse () @@ -251,7 +251,7 @@ -gboolean +gboolean ostree_content_file_parse () @@ -259,7 +259,7 @@ -gboolean +gboolean ostree_content_file_parse_at () @@ -267,7 +267,7 @@ -gboolean +gboolean ostree_raw_file_to_archive_z2_stream () @@ -275,7 +275,7 @@ -gboolean +gboolean ostree_raw_file_to_archive_z2_stream_with_options () @@ -283,7 +283,7 @@ -gboolean +gboolean ostree_raw_file_to_content_stream () @@ -291,7 +291,7 @@ -gboolean +gboolean ostree_break_hardlink () @@ -299,7 +299,7 @@ -gboolean +gboolean ostree_checksum_file_from_input () @@ -307,7 +307,7 @@ -gboolean +gboolean ostree_checksum_file () @@ -315,7 +315,7 @@ -gboolean +gboolean ostree_checksum_file_at () @@ -331,7 +331,7 @@ -gboolean +gboolean ostree_checksum_file_async_finish () @@ -339,7 +339,7 @@ -GVariant * +GVariant * ostree_create_directory_metadata () @@ -347,7 +347,7 @@ -gboolean +gboolean ostree_validate_structureof_objtype () @@ -355,7 +355,7 @@ -gboolean +gboolean ostree_validate_structureof_csum_v () @@ -363,7 +363,7 @@ -gboolean +gboolean ostree_validate_structureof_checksum_string () @@ -371,7 +371,7 @@ -gboolean +gboolean ostree_validate_structureof_file_mode () @@ -379,7 +379,7 @@ -gboolean +gboolean ostree_validate_structureof_commit () @@ -387,7 +387,7 @@ -gboolean +gboolean ostree_validate_structureof_dirtree () @@ -395,7 +395,7 @@ -gboolean +gboolean ostree_validate_structureof_dirmeta () @@ -403,7 +403,7 @@ -gchar * +gchar * ostree_commit_get_parent () @@ -411,7 +411,7 @@ -guint64 +guint64 ostree_commit_get_timestamp () @@ -419,7 +419,7 @@ -gchar * +gchar * ostree_commit_get_content_checksum () @@ -427,7 +427,7 @@ -gboolean +gboolean ostree_commit_get_object_sizes () @@ -459,7 +459,7 @@ -gboolean +gboolean ostree_check_version () @@ -543,11 +543,11 @@

Description

These functions implement repository-independent algorithms for operating on the core OSTree data formats, such as converting -GFileInfo into a GVariant.

+GFileInfo into a GVariant.

There are 4 types of objects; file, dirmeta, tree, and commit. The last 3 are metadata, and the file object is the only content object type.

-

All metadata objects are stored as GVariant (big endian). The +

All metadata objects are stored as GVariant (big endian). The rationale for this is the same as that of the ext{2,3,4} family of filesystems; most developers will be using LE, and so it's better to continually test the BE->LE swap.

@@ -576,21 +576,21 @@

Returns

-

TRUE if object type is metadata

+

TRUE if object type is metadata


ostree_metadata_variant_type ()

-
const GVariantType *
+
const GVariantType *
 ostree_metadata_variant_type (OstreeObjectType objtype);

ostree_validate_checksum_string ()

-
gboolean
+
gboolean
 ostree_validate_checksum_string (const char *sha256,
-                                 GError **error);
+ GError **error);

Use this function to see if input strings are checksums.

Parameters

@@ -616,14 +616,14 @@

Returns

-

TRUE if sha256 -is a valid checksum string, FALSE otherwise

+

TRUE if sha256 +is a valid checksum string, FALSE otherwise


ostree_checksum_to_bytes ()

-
guchar *
+
guchar *
 ostree_checksum_to_bytes (const char *checksum);

Parameters

@@ -643,14 +643,14 @@

Returns

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

+of length 32; free with g_free().

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


ostree_checksum_to_bytes_v ()

-
GVariant *
+
GVariant *
 ostree_checksum_to_bytes_v (const char *checksum);

Parameters

@@ -669,7 +669,7 @@

Returns

-

New GVariant of type ay with length 32.

+

New GVariant of type ay with length 32.

[transfer full]

@@ -677,7 +677,7 @@

ostree_checksum_from_bytes ()

char *
-ostree_checksum_from_bytes (const guchar *csum);
+ostree_checksum_from_bytes (const guchar *csum);

Parameters

@@ -704,7 +704,7 @@

ostree_checksum_from_bytes_v ()

char *
-ostree_checksum_from_bytes_v (GVariant *csum_v);
+ostree_checksum_from_bytes_v (GVariant *csum_v);

Parameters

@@ -715,7 +715,7 @@ - +

csum_v

GVariant of type ay

GVariant of type ay

 
@@ -731,7 +731,7 @@

ostree_checksum_inplace_from_bytes ()

void
-ostree_checksum_inplace_from_bytes (const guchar *csum,
+ostree_checksum_inplace_from_bytes (const guchar *csum,
                                     char *buf);

Overwrite the contents of buf with stringified version of csum @@ -765,7 +765,7 @@

ostree_checksum_inplace_to_bytes ()

void
 ostree_checksum_inplace_to_bytes (const char *checksum,
-                                  guchar *buf);
+ guchar *buf);

Convert checksum from a string to binary in-place, without allocating memory. Use this function in hot code paths.

@@ -795,8 +795,8 @@

ostree_checksum_bytes_peek ()

-
const guchar *
-ostree_checksum_bytes_peek (GVariant *bytes);
+
const guchar *
+ostree_checksum_bytes_peek (GVariant *bytes);

Parameters

@@ -807,7 +807,7 @@ - +

bytes

GVariant of type ay

GVariant of type ay

 
@@ -816,16 +816,16 @@

Returns

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

+does not have the correct length, return NULL.

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


ostree_checksum_bytes_peek_validate ()

-
const guchar *
-ostree_checksum_bytes_peek_validate (GVariant *bytes,
-                                     GError **error);
+
const guchar *
+ostree_checksum_bytes_peek_validate (GVariant *bytes,
+                                     GError **error);

Like ostree_checksum_bytes_peek(), but also throws error .

@@ -839,7 +839,7 @@

bytes

-

GVariant of type ay

+

GVariant of type ay

  @@ -860,7 +860,7 @@

ostree_checksum_b64_from_bytes ()

char *
-ostree_checksum_b64_from_bytes (const guchar *csum);
+ostree_checksum_b64_from_bytes (const guchar *csum);

Parameters

@@ -889,7 +889,7 @@

ostree_checksum_b64_to_bytes ()

-
guchar *
+
guchar *
 ostree_checksum_b64_to_bytes (const char *checksum);

Parameters

@@ -919,7 +919,7 @@

ostree_checksum_b64_inplace_from_bytes ()

void
 ostree_checksum_b64_inplace_from_bytes
-                               (const guchar *csum,
+                               (const guchar *csum,
                                 char *buf);

Overwrite the contents of buf with modified base64 encoding of csum @@ -955,7 +955,7 @@

ostree_checksum_b64_inplace_to_bytes ()

void
 ostree_checksum_b64_inplace_to_bytes (const char *checksum,
-                                      guint8 *buf);
+ guint8 *buf);

Overwrite the contents of buf with stringified version of csum .

@@ -987,8 +987,8 @@

ostree_cmp_checksum_bytes ()

int
-ostree_cmp_checksum_bytes (const guchar *a,
-                           const guchar *b);
+ostree_cmp_checksum_bytes (const guchar *a, + const guchar *b);

Compare two binary checksums, using memcmp().

Parameters

@@ -1016,9 +1016,9 @@

ostree_validate_rev ()

-
gboolean
+
gboolean
 ostree_validate_rev (const char *rev,
-                     GError **error);
+ GError **error);

Parameters

@@ -1043,16 +1043,16 @@

Returns

-

TRUE if rev +

TRUE if rev is a valid ref string


ostree_validate_remote_name ()

-
gboolean
+
gboolean
 ostree_validate_remote_name (const char *remote_name,
-                             GError **error);
+ GError **error);

Parameters

@@ -1077,7 +1077,7 @@

Returns

-

TRUE if remote_name +

TRUE if remote_name is a valid remote name

Since: 2017.8

@@ -1085,20 +1085,20 @@

ostree_parse_refspec ()

-
gboolean
+
gboolean
 ostree_parse_refspec (const char *refspec,
                       char **out_remote,
                       char **out_ref,
-                      GError **error);
+ GError **error);

Split a refspec like gnome-ostree:gnome-ostree/buildmaster or just gnome-ostree/buildmaster into two parts. In the first case, out_remote will be set to gnome-ostree, and out_ref to gnome-ostree/buildmaster. In the second case (a local ref), out_remote - will be NULL, and out_ref + will be NULL, and out_ref -will be gnome-ostree/buildmaster. In both cases, TRUE will be returned.

+will be gnome-ostree/buildmaster. In both cases, TRUE will be returned.

Parameters

@@ -1116,7 +1116,7 @@ +or NULL if the refspec refs to a local ref.

@@ -1134,7 +1134,7 @@

Returns

-

TRUE on successful parsing, FALSE otherwise

+

TRUE on successful parsing, FALSE otherwise


@@ -1185,9 +1185,9 @@

ostree_hash_object_name ()

-
guint
-ostree_hash_object_name (gconstpointer a);
-

Use this function with GHashTable and ostree_object_name_serialize().

+
guint
+ostree_hash_object_name (gconstpointer a);
+

Use this function with GHashTable and ostree_object_name_serialize().

Parameters

out_remote

Return location for the remote name, -or NULL if the refspec refs to a local ref.

[out][nullable][optional]
@@ -1198,7 +1198,7 @@ - +

a

A GVariant containing a serialized object

A GVariant containing a serialized object

 
@@ -1207,7 +1207,7 @@

ostree_object_name_serialize ()

-
GVariant *
+
GVariant *
 ostree_object_name_serialize (const char *checksum,
                               OstreeObjectType objtype);
@@ -1234,7 +1234,7 @@

Returns

-

A new floating GVariant containing checksum string and objtype.

+

A new floating GVariant containing checksum string and objtype.

[transfer floating]

@@ -1242,7 +1242,7 @@

ostree_object_name_deserialize ()

void
-ostree_object_name_deserialize (GVariant *variant,
+ostree_object_name_deserialize (GVariant *variant,
                                 const char **out_checksum,
                                 OstreeObjectType *out_objtype);

Reverse ostree_object_name_serialize(). Note that out_checksum @@ -1260,7 +1260,7 @@

variant

-

A GVariant of type (su)

+

A GVariant of type (su)

  @@ -1318,7 +1318,7 @@

ostree_object_from_string ()

void
 ostree_object_from_string (const char *str,
-                           gchar **out_checksum,
+                           gchar **out_checksum,
                            OstreeObjectType *out_objtype);

Reverse ostree_object_to_string().

@@ -1352,16 +1352,16 @@

ostree_content_stream_parse ()

-
gboolean
-ostree_content_stream_parse (gboolean compressed,
-                             GInputStream *input,
-                             guint64 input_length,
-                             gboolean trusted,
-                             GInputStream **out_input,
-                             GFileInfo **out_file_info,
-                             GVariant **out_xattrs,
-                             GCancellable *cancellable,
-                             GError **error);
+
gboolean
+ostree_content_stream_parse (gboolean compressed,
+                             GInputStream *input,
+                             guint64 input_length,
+                             gboolean trusted,
+                             GInputStream **out_input,
+                             GFileInfo **out_file_info,
+                             GVariant **out_xattrs,
+                             GCancellable *cancellable,
+                             GError **error);

The reverse of ostree_raw_file_to_content_stream(); this function converts an object content stream back into components.

@@ -1390,7 +1390,7 @@

trusted

-

If TRUE, assume the content has been validated

+

If TRUE, assume the content has been validated

  @@ -1425,15 +1425,15 @@

ostree_content_file_parse ()

-
gboolean
-ostree_content_file_parse (gboolean compressed,
-                           GFile *content_path,
-                           gboolean trusted,
-                           GInputStream **out_input,
-                           GFileInfo **out_file_info,
-                           GVariant **out_xattrs,
-                           GCancellable *cancellable,
-                           GError **error);
+
gboolean
+ostree_content_file_parse (gboolean compressed,
+                           GFile *content_path,
+                           gboolean trusted,
+                           GInputStream **out_input,
+                           GFileInfo **out_file_info,
+                           GVariant **out_xattrs,
+                           GCancellable *cancellable,
+                           GError **error);

A thin wrapper for ostree_content_stream_parse(); this function converts an object content stream back into components.

@@ -1457,7 +1457,7 @@

trusted

-

If TRUE, assume the content has been validated

+

If TRUE, assume the content has been validated

  @@ -1492,16 +1492,16 @@

ostree_content_file_parse_at ()

-
gboolean
-ostree_content_file_parse_at (gboolean compressed,
+
gboolean
+ostree_content_file_parse_at (gboolean compressed,
                               int parent_dfd,
                               const char *path,
-                              gboolean trusted,
-                              GInputStream **out_input,
-                              GFileInfo **out_file_info,
-                              GVariant **out_xattrs,
-                              GCancellable *cancellable,
-                              GError **error);
+ gboolean trusted, + GInputStream **out_input, + GFileInfo **out_file_info, + GVariant **out_xattrs, + GCancellable *cancellable, + GError **error);

A thin wrapper for ostree_content_stream_parse(); this function converts an object content stream back into components.

@@ -1530,7 +1530,7 @@

trusted

-

If TRUE, assume the content has been validated

+

If TRUE, assume the content has been validated

  @@ -1565,13 +1565,13 @@

ostree_raw_file_to_archive_z2_stream ()

-
gboolean
-ostree_raw_file_to_archive_z2_stream (GInputStream *input,
-                                      GFileInfo *file_info,
-                                      GVariant *xattrs,
-                                      GInputStream **out_input,
-                                      GCancellable *cancellable,
-                                      GError **error);
+
gboolean
+ostree_raw_file_to_archive_z2_stream (GInputStream *input,
+                                      GFileInfo *file_info,
+                                      GVariant *xattrs,
+                                      GInputStream **out_input,
+                                      GCancellable *cancellable,
+                                      GError **error);

Convert from a "bare" file representation into an OSTREE_OBJECT_TYPE_FILE stream suitable for ostree pull.

@@ -1621,15 +1621,15 @@

ostree_raw_file_to_archive_z2_stream_with_options ()

-
gboolean
+
gboolean
 ostree_raw_file_to_archive_z2_stream_with_options
-                               (GInputStream *input,
-                                GFileInfo *file_info,
-                                GVariant *xattrs,
-                                GVariant *options,
-                                GInputStream **out_input,
-                                GCancellable *cancellable,
-                                GError **error);
+ (GInputStream *input, + GFileInfo *file_info, + GVariant *xattrs, + GVariant *options, + GInputStream **out_input, + GCancellable *cancellable, + GError **error);

Like ostree_raw_file_to_archive_z2_stream(), but supports an extensible set of flags. The following flags are currently defined:

  • compression-level (i): Level of compression to use, 0–9, with 0 being @@ -1686,14 +1686,14 @@


    ostree_raw_file_to_content_stream ()

    -
    gboolean
    -ostree_raw_file_to_content_stream (GInputStream *input,
    -                                   GFileInfo *file_info,
    -                                   GVariant *xattrs,
    -                                   GInputStream **out_input,
    -                                   guint64 *out_length,
    -                                   GCancellable *cancellable,
    -                                   GError **error);
    +
    gboolean
    +ostree_raw_file_to_content_stream (GInputStream *input,
    +                                   GFileInfo *file_info,
    +                                   GVariant *xattrs,
    +                                   GInputStream **out_input,
    +                                   guint64 *out_length,
    +                                   GCancellable *cancellable,
    +                                   GError **error);

    Convert from a "bare" file representation into an OSTREE_OBJECT_TYPE_FILE stream. This is a fundamental operation for writing data to an OstreeRepo.

    @@ -1748,12 +1748,12 @@

    ostree_break_hardlink ()

    -
    gboolean
    +
    gboolean
     ostree_break_hardlink (int dfd,
                            const char *path,
    -                       gboolean skip_xattrs,
    -                       GCancellable *cancellable,
    -                       GError **error);
    + gboolean skip_xattrs, + GCancellable *cancellable, + GError **error);

    In many cases using libostree, a program may need to "break" hardlinks by performing a copy. For example, in order to logically append to a file.

    @@ -1803,14 +1803,14 @@

    ostree_checksum_file_from_input ()

    -
    gboolean
    -ostree_checksum_file_from_input (GFileInfo *file_info,
    -                                 GVariant *xattrs,
    -                                 GInputStream *in,
    +
    gboolean
    +ostree_checksum_file_from_input (GFileInfo *file_info,
    +                                 GVariant *xattrs,
    +                                 GInputStream *in,
                                      OstreeObjectType objtype,
    -                                 guchar **out_csum,
    -                                 GCancellable *cancellable,
    -                                 GError **error);
    + guchar **out_csum, + GCancellable *cancellable, + GError **error);

    Compute the OSTree checksum for a given input.

    Parameters

    @@ -1833,7 +1833,7 @@

    in

    -

    File content, should be NULL for symbolic links.

    +

    File content, should be NULL for symbolic links.

    [allow-none] @@ -1863,12 +1863,12 @@

    ostree_checksum_file ()

    -
    gboolean
    -ostree_checksum_file (GFile *f,
    +
    gboolean
    +ostree_checksum_file (GFile *f,
                           OstreeObjectType objtype,
    -                      guchar **out_csum,
    -                      GCancellable *cancellable,
    -                      GError **error);
    + guchar **out_csum, + GCancellable *cancellable, + GError **error);

    Compute the OSTree checksum for a given file.

    Parameters

    @@ -1911,15 +1911,15 @@

    ostree_checksum_file_at ()

    -
    gboolean
    +
    gboolean
     ostree_checksum_file_at (int dfd,
                              const char *path,
                              struct stat *stbuf,
                              OstreeObjectType objtype,
                              OstreeChecksumFlags flags,
                              char **out_checksum,
    -                         GCancellable *cancellable,
    -                         GError **error);
    + GCancellable *cancellable, + GError **error);

    Compute the OSTree checksum for a given file. This is an fd-relative version of ostree_checksum_file() which also takes flags and fills in a caller allocated buffer.

    @@ -1981,12 +1981,12 @@

    ostree_checksum_file_async ()

    void
    -ostree_checksum_file_async (GFile *f,
    +ostree_checksum_file_async (GFile *f,
                                 OstreeObjectType objtype,
                                 int io_priority,
    -                            GCancellable *cancellable,
    -                            GAsyncReadyCallback callback,
    -                            gpointer user_data);
    + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data);

    Asynchronously compute the OSTree checksum for a given file; complete with ostree_checksum_file_async_finish().

    @@ -2036,11 +2036,11 @@

    ostree_checksum_file_async_finish ()

    -
    gboolean
    -ostree_checksum_file_async_finish (GFile *f,
    -                                   GAsyncResult *result,
    -                                   guchar **out_csum,
    -                                   GError **error);
    +
    gboolean
    +ostree_checksum_file_async_finish (GFile *f,
    +                                   GAsyncResult *result,
    +                                   guchar **out_csum,
    +                                   GError **error);

    Finish computing the OSTree checksum for a given file; see ostree_checksum_file_async().

    @@ -2079,9 +2079,9 @@

    ostree_create_directory_metadata ()

    -
    GVariant *
    -ostree_create_directory_metadata (GFileInfo *dir_info,
    -                                  GVariant *xattrs);
    +
    GVariant *
    +ostree_create_directory_metadata (GFileInfo *dir_info,
    +                                  GVariant *xattrs);

    Parameters

    @@ -2093,7 +2093,7 @@ - + @@ -2106,16 +2106,16 @@

    Returns

    -

    A new GVariant containing OSTREE_OBJECT_TYPE_DIR_META.

    +

    A new GVariant containing OSTREE_OBJECT_TYPE_DIR_META.

    [transfer full]


    ostree_validate_structureof_objtype ()

    -
    gboolean
    -ostree_validate_structureof_objtype (guchar objtype,
    -                                     GError **error);
    +
    gboolean
    +ostree_validate_structureof_objtype (guchar objtype,
    +                                     GError **error);

    Parameters

    dir_info

    a GFileInfo containing directory information

    a GFileInfo containing directory information

     
    @@ -2133,16 +2133,16 @@

    Returns

    -

    TRUE if objtype +

    TRUE if objtype represents a valid object type


    ostree_validate_structureof_csum_v ()

    -
    gboolean
    -ostree_validate_structureof_csum_v (GVariant *checksum,
    -                                    GError **error);
    +
    gboolean
    +ostree_validate_structureof_csum_v (GVariant *checksum,
    +                                    GError **error);

    Parameters

    @@ -2154,7 +2154,7 @@ - + @@ -2167,17 +2167,17 @@

    Returns

    -

    TRUE if checksum +

    TRUE if checksum is a valid binary SHA256 checksum


    ostree_validate_structureof_checksum_string ()

    -
    gboolean
    +
    gboolean
     ostree_validate_structureof_checksum_string
                                    (const char *checksum,
    -                                GError **error);
    + GError **error);

    Parameters

    checksum

    a GVariant of type "ay"

    a GVariant of type "ay"

     
    @@ -2202,16 +2202,16 @@

    Returns

    -

    TRUE if checksum +

    TRUE if checksum is a valid ASCII SHA256 checksum


    ostree_validate_structureof_file_mode ()

    -
    gboolean
    -ostree_validate_structureof_file_mode (guint32 mode,
    -                                       GError **error);
    +
    gboolean
    +ostree_validate_structureof_file_mode (guint32 mode,
    +                                       GError **error);

    Parameters

    @@ -2236,16 +2236,16 @@

    Returns

    -

    TRUE if mode +

    TRUE if mode represents a valid file type and permissions


    ostree_validate_structureof_commit ()

    -
    gboolean
    -ostree_validate_structureof_commit (GVariant *commit,
    -                                    GError **error);
    +
    gboolean
    +ostree_validate_structureof_commit (GVariant *commit,
    +                                    GError **error);

    Use this to validate the basic structure of commit , independent of any other objects it references.

    @@ -2273,16 +2273,16 @@

    Returns

    -

    TRUE if commit +

    TRUE if commit is structurally valid


    ostree_validate_structureof_dirtree ()

    -
    gboolean
    -ostree_validate_structureof_dirtree (GVariant *dirtree,
    -                                     GError **error);
    +
    gboolean
    +ostree_validate_structureof_dirtree (GVariant *dirtree,
    +                                     GError **error);

    Use this to validate the basic structure of dirtree , independent of any other objects it references.

    @@ -2310,16 +2310,16 @@

    Returns

    -

    TRUE if dirtree +

    TRUE if dirtree is structurally valid


    ostree_validate_structureof_dirmeta ()

    -
    gboolean
    -ostree_validate_structureof_dirmeta (GVariant *dirmeta,
    -                                     GError **error);
    +
    gboolean
    +ostree_validate_structureof_dirmeta (GVariant *dirmeta,
    +                                     GError **error);

    Use this to validate the basic structure of dirmeta .

    @@ -2346,15 +2346,15 @@

    Returns

    -

    TRUE if dirmeta +

    TRUE if dirmeta is structurally valid


    ostree_commit_get_parent ()

    -
    gchar *
    -ostree_commit_get_parent (GVariant *commit_variant);
    +
    gchar *
    +ostree_commit_get_parent (GVariant *commit_variant);

    Parameters

    @@ -2373,15 +2373,15 @@

    Returns

    Checksum of the parent commit of commit_variant -, or NULL +, or NULL if none


    ostree_commit_get_timestamp ()

    -
    guint64
    -ostree_commit_get_timestamp (GVariant *commit_variant);
    +
    guint64
    +ostree_commit_get_timestamp (GVariant *commit_variant);

    Parameters

    @@ -2406,8 +2406,8 @@

    ostree_commit_get_content_checksum ()

    -
    gchar *
    -ostree_commit_get_content_checksum (GVariant *commit_variant);
    +
    gchar *
    +ostree_commit_get_content_checksum (GVariant *commit_variant);

    There are use cases where one wants a checksum just of the content of a commit. OSTree commits by default capture the current timestamp, and may have additional metadata, which means that re-committing identical content @@ -2434,7 +2434,7 @@

    Returns

    -

    A SHA-256 hex string, or NULL if commit_variant +

    A SHA-256 hex string, or NULL if commit_variant is not well-formed.

    [nullable]

    @@ -2443,15 +2443,15 @@

    ostree_commit_get_object_sizes ()

    -
    gboolean
    -ostree_commit_get_object_sizes (GVariant *commit_variant,
    -                                GPtrArray **out_sizes_entries,
    -                                GError **error);
    +
    gboolean
    +ostree_commit_get_object_sizes (GVariant *commit_variant,
    +                                GPtrArray **out_sizes_entries,
    +                                GError **error);

    Reads a commit's "ostree.sizes" metadata and returns an array of OstreeCommitSizesEntry in out_sizes_entries . Each element represents an object in the commit. If the commit does not contain -the "ostree.sizes" metadata, a G_IO_ERROR_NOT_FOUND error will be +the "ostree.sizes" metadata, a G_IO_ERROR_NOT_FOUND error will be returned.

    Parameters

    @@ -2486,10 +2486,10 @@

    ostree_commit_sizes_entry_new ()

    OstreeCommitSizesEntry *
    -ostree_commit_sizes_entry_new (const gchar *checksum,
    +ostree_commit_sizes_entry_new (const gchar *checksum,
                                    OstreeObjectType objtype,
    -                               guint64 unpacked,
    -                               guint64 archived);
    + guint64 unpacked, + guint64 archived);

    Create a new OstreeCommitSizesEntry for representing an object in a commit's "ostree.sizes" metadata.

    @@ -2588,9 +2588,9 @@

    ostree_check_version ()

    -
    gboolean
    -ostree_check_version (guint required_year,
    -                      guint required_release);
    +
    gboolean
    +ostree_check_version (guint required_year,
    +                      guint required_release);

    Parameters

    @@ -2615,7 +2615,7 @@

    Returns

    -

    TRUE if current libostree has at least the requested version, FALSE otherwise

    +

    TRUE if current libostree has at least the requested version, FALSE otherwise

    Since: 2017.4

    @@ -2843,7 +2843,7 @@ - + @@ -2853,12 +2853,12 @@ - + - + @@ -2870,6 +2870,6 @@ +
    Generated by GTK-Doc V1.33.0 \ No newline at end of file diff -Nru ostree-2020.7/apidoc/html/ostree.devhelp2 ostree-2020.8/apidoc/html/ostree.devhelp2 --- ostree-2020.7/apidoc/html/ostree.devhelp2 2020-10-14 00:06:16.000000000 +0000 +++ ostree-2020.8/apidoc/html/ostree.devhelp2 2020-11-17 15:38:22.000000000 +0000 @@ -198,6 +198,8 @@ + + @@ -226,6 +228,7 @@ + diff -Nru ostree-2020.7/apidoc/html/ostree-GPG-signature-verification-results.html ostree-2020.8/apidoc/html/ostree-GPG-signature-verification-results.html --- ostree-2020.7/apidoc/html/ostree-GPG-signature-verification-results.html 2020-10-14 00:06:16.000000000 +0000 +++ ostree-2020.8/apidoc/html/ostree-GPG-signature-verification-results.html 2020-11-17 15:38:22.000000000 +0000 @@ -8,7 +8,7 @@ - + @@ -41,7 +41,7 @@ +, or NULL.

    @@ -248,22 +248,22 @@

    Returns

    -

    TRUE on success, FALSE on failure

    +

    TRUE on success, FALSE on failure


    ostree_gpg_verify_result_get ()

    -
    GVariant *
    +
    GVariant *
     ostree_gpg_verify_result_get (OstreeGpgVerifyResult *result,
    -                              guint signature_index,
    +                              guint signature_index,
                                   OstreeGpgSignatureAttr *attrs,
    -                              guint n_attrs);
    -

    Builds a GVariant tuple of requested attributes for the GPG signature at + guint n_attrs);

    +

    Builds a GVariant tuple of requested attributes for the GPG signature at signature_index in result . See the OstreeGpgSignatureAttr description -for the GVariantType of each available attribute.

    +for the GVariantType of each available attribute.

    It is a programmer error to request an invalid OstreeGpgSignatureAttr or an invalid signature_index . Use ostree_gpg_verify_result_count_all() to @@ -304,29 +304,29 @@

    Returns

    -

    a new, floating, GVariant tuple

    +

    a new, floating, GVariant tuple


    ostree_gpg_verify_result_get_all ()

    -
    GVariant *
    +
    GVariant *
     ostree_gpg_verify_result_get_all (OstreeGpgVerifyResult *result,
    -                                  guint signature_index);
    -

    Builds a GVariant tuple of all available attributes for the GPG signature + guint signature_index);

    +

    Builds a GVariant tuple of all available attributes for the GPG signature at signature_index in result .

    -

    The child values in the returned GVariant tuple are ordered to match the +

    The child values in the returned GVariant tuple are ordered to match the OstreeGpgSignatureAttr enumeration, which means the enum values can be -used as index values in functions like g_variant_get_child(). See the -OstreeGpgSignatureAttr description for the GVariantType of each +used as index values in functions like g_variant_get_child(). See the +OstreeGpgSignatureAttr description for the GVariantType of each available attribute.

    The OstreeGpgSignatureAttr enumeration may be extended in the future - with new attributes, which would affect the GVariant tuple returned by + with new attributes, which would affect the GVariant tuple returned by this function. While the position and type of current child values in - the GVariant tuple will not change, to avoid backward-compatibility + the GVariant tuple will not change, to avoid backward-compatibility issues please do not depend on the tuple's overall size or type signature.

    @@ -359,7 +359,7 @@

    Returns

    -

    a new, floating, GVariant tuple

    +

    a new, floating, GVariant tuple


    @@ -367,9 +367,9 @@

    ostree_gpg_verify_result_describe ()

    void
     ostree_gpg_verify_result_describe (OstreeGpgVerifyResult *result,
    -                                   guint signature_index,
    -                                   GString *output_buffer,
    -                                   const gchar *line_prefix,
    +                                   guint signature_index,
    +                                   GString *output_buffer,
    +                                   const gchar *line_prefix,
                                        OstreeGpgSignatureFormatFlags flags);

    Appends a brief, human-readable description of the GPG signature at signature_index @@ -408,7 +408,7 @@

    - + @@ -430,11 +430,11 @@

    ostree_gpg_verify_result_describe_variant ()

    void
     ostree_gpg_verify_result_describe_variant
    -                               (GVariant *variant,
    -                                GString *output_buffer,
    -                                const gchar *line_prefix,
    +                               (GVariant *variant,
    +                                GString *output_buffer,
    +                                const gchar *line_prefix,
                                     OstreeGpgSignatureFormatFlags flags);
    -

    Similar to ostree_gpg_verify_result_describe() but takes a GVariant of +

    Similar to ostree_gpg_verify_result_describe() but takes a GVariant of all attributes for a GPG signature instead of an OstreeGpgVerifyResult and signature index.

    The variant @@ -451,12 +451,12 @@

    - + - + @@ -476,14 +476,14 @@

    ostree_gpg_verify_result_require_valid_signature ()

    -
    gboolean
    +
    gboolean
     ostree_gpg_verify_result_require_valid_signature
                                    (OstreeGpgVerifyResult *result,
    -                                GError **error);
    + GError **error);

    Checks if the result contains at least one signature from the trusted keyring. You can call this function immediately after ostree_repo_verify_summary() or ostree_repo_verify_commit_ext() - -it will handle the NULL result +it will handle the NULL result and filled error too.

    @@ -502,7 +502,7 @@
    - + @@ -510,9 +510,9 @@

    Returns

    -

    TRUE if result -was not NULL and had at least one -signature from trusted keyring, otherwise FALSE

    +

    TRUE if result +was not NULL and had at least one +signature from trusted keyring, otherwise FALSE

    Since: 2016.6

    @@ -592,7 +592,7 @@

    enum OstreeGpgSignatureAttr

    Signature attributes available from an OstreeGpgVerifyResult. -The attribute's GVariantType is shown in brackets.

    +The attribute's GVariantType is shown in brackets.

    Members

    gchar *checksum;

    gchar *checksum;

    object checksum.

    [not nullable]
     

    guint64 unpacked;

    guint64 unpacked;

    unpacked object size

     

    guint64 archived;

    guint64 archived;

    compressed object size

     
    -guint +guint ostree_gpg_verify_result_count_all () @@ -49,7 +49,7 @@
    -guint +guint ostree_gpg_verify_result_count_valid () @@ -57,7 +57,7 @@
    -gboolean +gboolean ostree_gpg_verify_result_lookup () @@ -65,7 +65,7 @@
    -GVariant * +GVariant * ostree_gpg_verify_result_get () @@ -73,7 +73,7 @@
    -GVariant * +GVariant * ostree_gpg_verify_result_get_all () @@ -97,7 +97,7 @@
    -gboolean +gboolean ostree_gpg_verify_result_require_valid_signature () @@ -150,7 +150,7 @@

    Functions

    ostree_gpg_verify_result_count_all ()

    -
    guint
    +
    guint
     ostree_gpg_verify_result_count_all (OstreeGpgVerifyResult *result);

    Counts all the signatures in result .

    @@ -177,7 +177,7 @@

    ostree_gpg_verify_result_count_valid ()

    -
    guint
    +
    guint
     ostree_gpg_verify_result_count_valid (OstreeGpgVerifyResult *result);

    Counts only the valid signatures in result .

    @@ -204,17 +204,17 @@

    ostree_gpg_verify_result_lookup ()

    -
    gboolean
    +
    gboolean
     ostree_gpg_verify_result_lookup (OstreeGpgVerifyResult *result,
    -                                 const gchar *key_id,
    -                                 guint *out_signature_index);
    + const gchar *key_id, + guint *out_signature_index);

    Searches result for a signature signed by key_id . If a match is found, -the function returns TRUE and sets out_signature_index +the function returns TRUE and sets out_signature_index so that further signature details can be obtained through ostree_gpg_verify_result_get(). -If no match is found, the function returns FALSE and leaves +If no match is found, the function returns FALSE and leaves out_signature_index unchanged.

    @@ -240,7 +240,7 @@

    out_signature_index

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

    [out]

    output_buffer

    a GString to hold the description

    a GString to hold the description

     

    variant

    a GVariant from ostree_gpg_verify_result_get_all()

    a GVariant from ostree_gpg_verify_result_get_all()

     

    output_buffer

    a GString to hold the description

    a GString to hold the description

     

    error

    A GError

    A GError

     
    @@ -605,56 +605,56 @@ @@ -662,7 +662,7 @@ @@ -670,7 +670,7 @@ @@ -678,14 +678,14 @@ @@ -693,7 +693,7 @@ @@ -711,7 +711,7 @@ - + @@ -364,11 +364,11 @@

    ostree_mutable_tree_ensure_dir ()

    -
    gboolean
    +
    gboolean
     ostree_mutable_tree_ensure_dir (OstreeMutableTree *self,
                                     const char *name,
                                     OstreeMutableTree **out_subdir,
    -                                GError **error);
    + GError **error);

    Returns the subdirectory of self with filename name , creating an empty one it if it doesn't exist.

    @@ -398,7 +398,7 @@
    - + @@ -408,12 +408,12 @@

    ostree_mutable_tree_lookup ()

    -
    gboolean
    +
    gboolean
     ostree_mutable_tree_lookup (OstreeMutableTree *self,
                                 const char *name,
                                 char **out_file_checksum,
                                 OstreeMutableTree **out_subdir,
    -                            GError **error);
    + GError **error);

    Parameters

    OSTREE_GPG_SIGNATURE_ATTR_VALID

    -

    [G_VARIANT_TYPE_BOOLEAN] Is the signature valid?

    +

    [G_VARIANT_TYPE_BOOLEAN] Is the signature valid?

     

    OSTREE_GPG_SIGNATURE_ATTR_SIG_EXPIRED

    -

    [G_VARIANT_TYPE_BOOLEAN] Has the signature expired?

    +

    [G_VARIANT_TYPE_BOOLEAN] Has the signature expired?

     

    OSTREE_GPG_SIGNATURE_ATTR_KEY_EXPIRED

    -

    [G_VARIANT_TYPE_BOOLEAN] Has the signing key expired?

    +

    [G_VARIANT_TYPE_BOOLEAN] Has the signing key expired?

     

    OSTREE_GPG_SIGNATURE_ATTR_KEY_REVOKED

    -

    [G_VARIANT_TYPE_BOOLEAN] Has the signing key been revoked?

    +

    [G_VARIANT_TYPE_BOOLEAN] Has the signing key been revoked?

     

    OSTREE_GPG_SIGNATURE_ATTR_KEY_MISSING

    -

    [G_VARIANT_TYPE_BOOLEAN] Is the signing key missing?

    +

    [G_VARIANT_TYPE_BOOLEAN] Is the signing key missing?

     

    OSTREE_GPG_SIGNATURE_ATTR_FINGERPRINT

    -

    [G_VARIANT_TYPE_STRING] Fingerprint of the signing key

    +

    [G_VARIANT_TYPE_STRING] Fingerprint of the signing key

     

    OSTREE_GPG_SIGNATURE_ATTR_TIMESTAMP

    -

    [G_VARIANT_TYPE_INT64] Signature creation Unix timestamp

    +

    [G_VARIANT_TYPE_INT64] Signature creation Unix timestamp

     

    OSTREE_GPG_SIGNATURE_ATTR_EXP_TIMESTAMP

    -

    [G_VARIANT_TYPE_INT64] Signature expiration Unix timestamp (0 if no +

    [G_VARIANT_TYPE_INT64] Signature expiration Unix timestamp (0 if no expiration)

     

    OSTREE_GPG_SIGNATURE_ATTR_PUBKEY_ALGO_NAME

    -

    [G_VARIANT_TYPE_STRING] Name of the public key algorithm used to create +

    [G_VARIANT_TYPE_STRING] Name of the public key algorithm used to create the signature

     

    OSTREE_GPG_SIGNATURE_ATTR_HASH_ALGO_NAME

    -

    [G_VARIANT_TYPE_STRING] Name of the hash algorithm used to create the +

    [G_VARIANT_TYPE_STRING] Name of the hash algorithm used to create the signature

     

    OSTREE_GPG_SIGNATURE_ATTR_USER_NAME

    -

    [G_VARIANT_TYPE_STRING] The name of the signing key's primary user

    +

    [G_VARIANT_TYPE_STRING] The name of the signing key's primary user

     

    OSTREE_GPG_SIGNATURE_ATTR_USER_EMAIL

    -

    [G_VARIANT_TYPE_STRING] The email address of the signing key's primary +

    [G_VARIANT_TYPE_STRING] The email address of the signing key's primary user

     

    OSTREE_GPG_SIGNATURE_ATTR_FINGERPRINT_PRIMARY

    -

    [G_VARIANT_TYPE_STRING] Fingerprint of the signing key's primary key +

    [G_VARIANT_TYPE_STRING] Fingerprint of the signing key's primary key (will be the same as OSTREE_GPG_SIGNATURE_ATTR_FINGERPRINT if the the signature is already from the primary key rather than a subkey, and will be the empty string if the key is missing.)

    @@ -703,7 +703,7 @@

    OSTREE_GPG_SIGNATURE_ATTR_KEY_EXP_TIMESTAMP

    -

    [G_VARIANT_TYPE_INT64] Key expiration Unix timestamp (0 if no +

    [G_VARIANT_TYPE_INT64] Key expiration Unix timestamp (0 if no expiration or if the key is missing)

     

    OSTREE_GPG_SIGNATURE_ATTR_KEY_EXP_TIMESTAMP_PRIMARY

    -

    [G_VARIANT_TYPE_INT64] Key expiration Unix timestamp of the signing key's +

    [G_VARIANT_TYPE_INT64] Key expiration Unix timestamp of the signing key's primary key (will be the same as OSTREE_GPG_SIGNATURE_ATTR_KEY_EXP_TIMESTAMP if the signing key is the primary key and 0 if no expiration or if the key is missing)

    @@ -749,6 +749,6 @@ +
    Generated by GTK-Doc V1.33.0 \ No newline at end of file diff -Nru ostree-2020.7/apidoc/html/ostree-In-memory-modifiable-filesystem-tree.html ostree-2020.8/apidoc/html/ostree-In-memory-modifiable-filesystem-tree.html --- ostree-2020.7/apidoc/html/ostree-In-memory-modifiable-filesystem-tree.html 2020-10-14 00:06:16.000000000 +0000 +++ ostree-2020.8/apidoc/html/ostree-In-memory-modifiable-filesystem-tree.html 2020-11-17 15:38:22.000000000 +0000 @@ -8,7 +8,7 @@ - + @@ -57,7 +57,7 @@
    -gboolean +gboolean ostree_mutable_tree_check_error () @@ -95,7 +95,7 @@
    -gboolean +gboolean ostree_mutable_tree_replace_file () @@ -103,7 +103,7 @@
    -gboolean +gboolean ostree_mutable_tree_remove () @@ -111,7 +111,7 @@
    -gboolean +gboolean ostree_mutable_tree_ensure_dir () @@ -119,7 +119,7 @@
    -gboolean +gboolean ostree_mutable_tree_lookup () @@ -127,7 +127,7 @@
    -gboolean +gboolean ostree_mutable_tree_ensure_parent_dirs () @@ -135,7 +135,7 @@
    -gboolean +gboolean ostree_mutable_tree_walk () @@ -143,7 +143,7 @@
    -GHashTable * +GHashTable * ostree_mutable_tree_get_subdirs () @@ -151,7 +151,7 @@
    -GHashTable * +GHashTable * ostree_mutable_tree_get_files () @@ -159,7 +159,7 @@
    -gboolean +gboolean ostree_mutable_tree_fill_empty_from_dirtree () @@ -247,9 +247,9 @@

    ostree_mutable_tree_check_error ()

    -
    gboolean
    +
    gboolean
     ostree_mutable_tree_check_error (OstreeMutableTree *self,
    -                                 GError **error);
    + GError **error);

    In some cases, a tree may be in a "lazy" state that loads data in the background; if an error occurred during a non-throwing API call, it will have been cached. This function checks for a @@ -308,20 +308,20 @@


    ostree_mutable_tree_replace_file ()

    -
    gboolean
    +
    gboolean
     ostree_mutable_tree_replace_file (OstreeMutableTree *self,
                                       const char *name,
                                       const char *checksum,
    -                                  GError **error);
    + GError **error);

    ostree_mutable_tree_remove ()

    -
    gboolean
    +
    gboolean
     ostree_mutable_tree_remove (OstreeMutableTree *self,
                                 const char *name,
    -                            gboolean allow_noent,
    -                            GError **error);
    + gboolean allow_noent, + GError **error);

    Remove the file or subdirectory named name from the mutable tree self .

    @@ -353,7 +353,7 @@

    error

    a GError

    a GError

     

    error

    a GError

    a GError

     
    @@ -445,7 +445,7 @@ - + @@ -455,13 +455,13 @@

    ostree_mutable_tree_ensure_parent_dirs ()

    -
    gboolean
    +
    gboolean
     ostree_mutable_tree_ensure_parent_dirs
                                    (OstreeMutableTree *self,
    -                                GPtrArray *split_path,
    +                                GPtrArray *split_path,
                                     const char *metadata_checksum,
                                     OstreeMutableTree **out_parent,
    -                                GError **error);
    + GError **error);

    Create all parent trees necessary for the given split_path to exist.

    @@ -496,7 +496,7 @@
    - + @@ -506,12 +506,12 @@

    ostree_mutable_tree_walk ()

    -
    gboolean
    +
    gboolean
     ostree_mutable_tree_walk (OstreeMutableTree *self,
    -                          GPtrArray *split_path,
    -                          guint start,
    +                          GPtrArray *split_path,
    +                          guint start,
                               OstreeMutableTree **out_subdir,
    -                          GError **error);
    + GError **error);

    Traverse start number of elements starting from split_path ; the @@ -559,7 +559,7 @@


    ostree_mutable_tree_get_subdirs ()

    -
    GHashTable *
    +
    GHashTable *
     ostree_mutable_tree_get_subdirs (OstreeMutableTree *self);

    Returns

    @@ -570,7 +570,7 @@

    ostree_mutable_tree_get_files ()

    -
    GHashTable *
    +
    GHashTable *
     ostree_mutable_tree_get_files (OstreeMutableTree *self);

    Returns

    @@ -581,7 +581,7 @@

    ostree_mutable_tree_fill_empty_from_dirtree ()

    -
    gboolean
    +
    gboolean
     ostree_mutable_tree_fill_empty_from_dirtree
                                    (OstreeMutableTree *self,
                                     OstreeRepo *repo,
    @@ -622,6 +622,6 @@
     
    +
    Generated by GTK-Doc V1.33.0
    \ No newline at end of file diff -Nru ostree-2020.7/apidoc/html/ostree-ostree-bootconfig-parser.html ostree-2020.8/apidoc/html/ostree-ostree-bootconfig-parser.html --- ostree-2020.7/apidoc/html/ostree-ostree-bootconfig-parser.html 2020-10-14 00:06:16.000000000 +0000 +++ ostree-2020.8/apidoc/html/ostree-ostree-bootconfig-parser.html 2020-11-17 15:38:22.000000000 +0000 @@ -8,7 +8,7 @@ - + @@ -57,7 +57,7 @@
    +initrds or NULL to unset.

    @@ -319,7 +319,7 @@

    Returns

    -

    Array of initrds or NULL +

    Array of initrds or NULL if none are set.

    [array zero-terminated=1][transfer none][nullable]

    @@ -335,6 +335,6 @@ +
    Generated by GTK-Doc V1.33.0 \ No newline at end of file diff -Nru ostree-2020.7/apidoc/html/ostree-ostree-chain-input-stream.html ostree-2020.8/apidoc/html/ostree-ostree-chain-input-stream.html --- ostree-2020.7/apidoc/html/ostree-ostree-chain-input-stream.html 2020-10-14 00:06:16.000000000 +0000 +++ ostree-2020.8/apidoc/html/ostree-ostree-chain-input-stream.html 2020-11-17 15:38:22.000000000 +0000 @@ -8,7 +8,7 @@ - + @@ -69,7 +69,7 @@

    ostree_chain_input_stream_new ()

    OstreeChainInputStream *
    -ostree_chain_input_stream_new (GPtrArray *streams);
    +ostree_chain_input_stream_new (GPtrArray *streams);
    @@ -84,6 +84,6 @@
    +
    Generated by GTK-Doc V1.33.0 \ No newline at end of file diff -Nru ostree-2020.7/apidoc/html/ostree-ostree-checksum-input-stream.html ostree-2020.8/apidoc/html/ostree-ostree-checksum-input-stream.html --- ostree-2020.7/apidoc/html/ostree-ostree-checksum-input-stream.html 2020-10-14 00:06:16.000000000 +0000 +++ ostree-2020.8/apidoc/html/ostree-ostree-checksum-input-stream.html 2020-11-17 15:38:22.000000000 +0000 @@ -8,7 +8,7 @@ - + @@ -69,8 +69,8 @@

    ostree_checksum_input_stream_new ()

    OstreeChecksumInputStream *
    -ostree_checksum_input_stream_new (GInputStream *stream,
    -                                  GChecksum *checksum);
    +ostree_checksum_input_stream_new (GInputStream *stream, + GChecksum *checksum);
    @@ -85,6 +85,6 @@
    +
    Generated by GTK-Doc V1.33.0 \ No newline at end of file diff -Nru ostree-2020.7/apidoc/html/ostree-ostree-deployment.html ostree-2020.8/apidoc/html/ostree-ostree-deployment.html --- ostree-2020.7/apidoc/html/ostree-ostree-deployment.html 2020-10-14 00:06:16.000000000 +0000 +++ ostree-2020.8/apidoc/html/ostree-ostree-deployment.html 2020-11-17 15:38:22.000000000 +0000 @@ -8,7 +8,7 @@ - + @@ -41,7 +41,7 @@ - + @@ -633,7 +816,7 @@ - + @@ -654,6 +837,6 @@ +
    Generated by GTK-Doc V1.33.0 \ No newline at end of file diff -Nru ostree-2020.7/apidoc/html/ostree-ostree-diff.html ostree-2020.8/apidoc/html/ostree-ostree-diff.html --- ostree-2020.7/apidoc/html/ostree-ostree-diff.html 2020-10-14 00:06:16.000000000 +0000 +++ ostree-2020.8/apidoc/html/ostree-ostree-diff.html 2020-11-17 15:38:22.000000000 +0000 @@ -8,7 +8,7 @@ - + @@ -57,7 +57,7 @@ - + @@ -192,16 +192,16 @@

    ostree_diff_dirs_with_options ()

    -
    gboolean
    +
    gboolean
     ostree_diff_dirs_with_options (OstreeDiffFlags flags,
    -                               GFile *a,
    -                               GFile *b,
    -                               GPtrArray *modified,
    -                               GPtrArray *removed,
    -                               GPtrArray *added,
    +                               GFile *a,
    +                               GFile *b,
    +                               GPtrArray *modified,
    +                               GPtrArray *removed,
    +                               GPtrArray *added,
                                    OstreeDiffDirsOptions *options,
    -                               GCancellable *cancellable,
    -                               GError **error);
    + GCancellable *cancellable, + GError **error);

    Compute the difference between directory a and b as 3 separate @@ -225,7 +225,7 @@

    - + @@ -272,11 +272,11 @@

    ostree_diff_print ()

    void
    -ostree_diff_print (GFile *a,
    -                   GFile *b,
    -                   GPtrArray *modified,
    -                   GPtrArray *removed,
    -                   GPtrArray *added);
    +ostree_diff_print (GFile *a, + GFile *b, + GPtrArray *modified, + GPtrArray *removed, + GPtrArray *added);

    Print the contents of a diff to stdout.

    Parameters

    @@ -348,7 +348,7 @@

    struct OstreeDiffItem

    struct OstreeDiffItem {
    -  volatile gint refcount;
    +  gint refcount;  /* atomic */
     
       GFile *src;
       GFile *target;
    @@ -364,6 +364,6 @@
     
    +
    Generated by GTK-Doc V1.33.0
    \ No newline at end of file diff -Nru ostree-2020.7/apidoc/html/ostree-ostree-repo-file.html ostree-2020.8/apidoc/html/ostree-ostree-repo-file.html --- ostree-2020.7/apidoc/html/ostree-ostree-repo-file.html 2020-10-14 00:06:16.000000000 +0000 +++ ostree-2020.8/apidoc/html/ostree-ostree-repo-file.html 2020-11-17 15:38:22.000000000 +0000 @@ -7,7 +7,7 @@ - + @@ -40,7 +40,7 @@ - + - + @@ -7940,7 +8146,7 @@

    Returns

    -

    an OstreeGpgVerifyResult, or NULL on error.

    +

    an OstreeGpgVerifyResult, or NULL on error.

    [transfer full]

    Since: 2016.6

    @@ -7948,13 +8154,13 @@

    ostree_repo_verify_commit ()

    -
    gboolean
    +
    gboolean
     ostree_repo_verify_commit (OstreeRepo *self,
    -                           const gchar *commit_checksum,
    -                           GFile *keyringdir,
    -                           GFile *extra_keyring,
    -                           GCancellable *cancellable,
    -                           GError **error);
    + const gchar *commit_checksum, + GFile *keyringdir, + GFile *extra_keyring, + GCancellable *cancellable, + GError **error);

    Check for a valid GPG signature on commit named by the ASCII checksum commit_checksum .

    @@ -8002,7 +8208,7 @@

    Returns

    -

    TRUE if there was a GPG signature from a trusted keyring, otherwise FALSE

    +

    TRUE if there was a GPG signature from a trusted keyring, otherwise FALSE


    @@ -8010,11 +8216,11 @@

    ostree_repo_verify_commit_ext ()

    OstreeGpgVerifyResult *
     ostree_repo_verify_commit_ext (OstreeRepo *self,
    -                               const gchar *commit_checksum,
    -                               GFile *keyringdir,
    -                               GFile *extra_keyring,
    -                               GCancellable *cancellable,
    -                               GError **error);
    + const gchar *commit_checksum, + GFile *keyringdir, + GFile *extra_keyring, + GCancellable *cancellable, + GError **error);

    Read GPG signature(s) on the commit named by the ASCII checksum commit_checksum and return detailed results.

    @@ -8062,7 +8268,7 @@

    Returns

    -

    an OstreeGpgVerifyResult, or NULL on error.

    +

    an OstreeGpgVerifyResult, or NULL on error.

    [transfer full]

    @@ -8071,10 +8277,10 @@

    ostree_repo_verify_commit_for_remote ()

    OstreeGpgVerifyResult *
     ostree_repo_verify_commit_for_remote (OstreeRepo *self,
    -                                      const gchar *commit_checksum,
    -                                      const gchar *remote_name,
    -                                      GCancellable *cancellable,
    -                                      GError **error);
    + const gchar *commit_checksum, + const gchar *remote_name, + GCancellable *cancellable, + GError **error);

    Read GPG signature(s) on the commit named by the ASCII checksum commit_checksum and return detailed results, based on the keyring @@ -8119,7 +8325,7 @@

    Returns

    -

    an OstreeGpgVerifyResult, or NULL on error.

    +

    an OstreeGpgVerifyResult, or NULL on error.

    [transfer full]

    Since: 2016.14

    @@ -8130,10 +8336,10 @@
    OstreeGpgVerifyResult *
     ostree_repo_verify_summary (OstreeRepo *self,
                                 const char *remote_name,
    -                            GBytes *summary,
    -                            GBytes *signatures,
    -                            GCancellable *cancellable,
    -                            GError **error);
    + GBytes *summary, + GBytes *signatures, + GCancellable *cancellable, + GError **error);

    Verify signatures for summary data using GPG keys in the keyring for @@ -8160,12 +8366,12 @@

    - + - + @@ -8183,18 +8389,18 @@

    Returns

    -

    an OstreeGpgVerifyResult, or NULL on error.

    +

    an OstreeGpgVerifyResult, or NULL on error.

    [transfer full]


    ostree_repo_regenerate_summary ()

    -
    gboolean
    +
    gboolean
     ostree_repo_regenerate_summary (OstreeRepo *self,
    -                                GVariant *additional_metadata,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + GVariant *additional_metadata, + GCancellable *cancellable, + GError **error);

    An OSTree repository can contain a high level "summary" file that describes the available branches and other metadata.

    If the timetable for making commits and updating the summary file is fairly @@ -8226,7 +8432,7 @@

    - + @@ -8385,57 +8591,57 @@ - + - + - + - + - + - + - + - + - + - + @@ -8820,7 +9026,7 @@

    OSTREE_REPO_LIST_OBJECTS_VARIANT_TYPE

    #define OSTREE_REPO_LIST_OBJECTS_VARIANT_TYPE (G_VARIANT_TYPE ("(bas)")
     
    -

    b - TRUE if object is available "loose" +

    b - TRUE if object is available "loose" as - List of pack file checksums in which this object appears


    @@ -9007,6 +9213,6 @@ +
    Generated by GTK-Doc V1.33.0 \ No newline at end of file diff -Nru ostree-2020.7/apidoc/html/ostree-Progress-notification-system-for-asynchronous-operations.html ostree-2020.8/apidoc/html/ostree-Progress-notification-system-for-asynchronous-operations.html --- ostree-2020.7/apidoc/html/ostree-Progress-notification-system-for-asynchronous-operations.html 2020-10-14 00:06:16.000000000 +0000 +++ ostree-2020.8/apidoc/html/ostree-Progress-notification-system-for-asynchronous-operations.html 2020-11-17 15:38:22.000000000 +0000 @@ -8,7 +8,7 @@ - + @@ -81,7 +81,7 @@

    error

    a GError

    a GError

     

    error

    a GError

    a GError

     
    -gboolean +gboolean ostree_bootconfig_parser_parse () @@ -65,7 +65,7 @@
    -gboolean +gboolean ostree_bootconfig_parser_parse_at () @@ -73,7 +73,7 @@
    -gboolean +gboolean ostree_bootconfig_parser_write () @@ -81,7 +81,7 @@
    -gboolean +gboolean ostree_bootconfig_parser_write_at () @@ -174,21 +174,21 @@

    ostree_bootconfig_parser_parse ()

    -
    gboolean
    +
    gboolean
     ostree_bootconfig_parser_parse (OstreeBootconfigParser *self,
    -                                GFile *path,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + GFile *path, + GCancellable *cancellable, + GError **error);

    ostree_bootconfig_parser_parse_at ()

    -
    gboolean
    +
    gboolean
     ostree_bootconfig_parser_parse_at (OstreeBootconfigParser *self,
                                        int dfd,
                                        const char *path,
    -                                   GCancellable *cancellable,
    -                                   GError **error);
    + GCancellable *cancellable, + GError **error);

    Initialize a bootconfig from the given file.

    Parameters

    @@ -231,21 +231,21 @@

    ostree_bootconfig_parser_write ()

    -
    gboolean
    +
    gboolean
     ostree_bootconfig_parser_write (OstreeBootconfigParser *self,
    -                                GFile *output,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + GFile *output, + GCancellable *cancellable, + GError **error);

    ostree_bootconfig_parser_write_at ()

    -
    gboolean
    +
    gboolean
     ostree_bootconfig_parser_write_at (OstreeBootconfigParser *self,
                                        int dfd,
                                        const char *path,
    -                                   GCancellable *cancellable,
    -                                   GError **error);
    + GCancellable *cancellable, + GError **error);

    @@ -288,7 +288,7 @@

    initrds

    Array of overlay -initrds or NULL to unset.

    [array zero-terminated=1][transfer none][allow-none]
    -guint +guint ostree_deployment_hash () @@ -49,7 +49,7 @@
    -gboolean +gboolean ostree_deployment_equal () @@ -118,7 +118,7 @@
    -GKeyFile * +GKeyFile * ostree_deployment_get_origin () @@ -142,7 +142,7 @@
    -gboolean +gboolean ostree_deployment_is_pinned () @@ -150,7 +150,7 @@
    -gboolean +gboolean ostree_deployment_is_staged () @@ -234,15 +234,34 @@

    Functions

    ostree_deployment_hash ()

    -
    guint
    -ostree_deployment_hash (gconstpointer v);
    +
    guint
    +ostree_deployment_hash (gconstpointer v);
    +
    +

    Parameters

    +
    +++++ + + + + + +

    v

    Deployment.

    [type OstreeDeployment]
    +
    +
    +

    Returns

    +

    An integer suitable for use in a GHashTable

    +

    ostree_deployment_equal ()

    -
    gboolean
    -ostree_deployment_equal (gconstpointer ap,
    -                         gconstpointer bp);
    +
    gboolean
    +ostree_deployment_equal (gconstpointer ap,
    +                         gconstpointer bp);

    Parameters

    @@ -267,7 +286,7 @@

    Returns

    -

    TRUE if deployments have the same osname, csum, and deployserial

    +

    TRUE if deployments have the same osname, csum, and deployserial


    @@ -280,12 +299,78 @@ int deployserial, const char *bootcsum, int bootserial); +
    +

    Parameters

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    index

    Global index into the bootloader entries

     

    osname

    "stateroot" for this deployment

     

    csum

    OSTree commit that will be deployed

     

    deployserial

    Unique counter

     

    bootcsum

    Kernel/initrd checksum.

    [nullable]

    bootserial

    Unique index

     
    +
    +
    +

    Returns

    +

    New deployment.

    +

    [transfer full][not nullable]

    +

    ostree_deployment_get_index ()

    int
     ostree_deployment_get_index (OstreeDeployment *self);
    +
    +

    Parameters

    +
    +++++ + + + + + +

    self

    Deployment

     
    +
    +
    +

    Returns

    +

    The global index into the bootloader ordering

    +

    @@ -346,7 +431,7 @@

    ostree_deployment_get_origin ()

    -
    GKeyFile *
    +
    GKeyFile *
     ostree_deployment_get_origin (OstreeDeployment *self);

    Parameters

    @@ -395,7 +480,7 @@

    Returns

    Path to deployment root directory, relative to sysroot.

    -

    [transfer full]

    +

    [not nullable][transfer full]


    @@ -408,7 +493,7 @@

    ostree_deployment_is_pinned ()

    -
    gboolean
    +
    gboolean
     ostree_deployment_is_pinned (OstreeDeployment *self);

    See ostree_sysroot_deployment_set_pinned().

    @@ -435,7 +520,7 @@

    ostree_deployment_is_staged ()

    -
    gboolean
    +
    gboolean
     ostree_deployment_is_staged (OstreeDeployment *self);

    Parameters

    @@ -464,6 +549,29 @@
    void
     ostree_deployment_set_index (OstreeDeployment *self,
                                  int index);
    +

    Sets the global index into the bootloader ordering.

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + + + + +

    self

    Deployment

     

    index

    Index into bootloader ordering

     
    +

    @@ -471,6 +579,29 @@
    void
     ostree_deployment_set_bootserial (OstreeDeployment *self,
                                       int index);
    +

    Should never have been made public API; don't use this.

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + + + + +

    self

    Deployment

     

    index

    Don't use this

     
    +

    @@ -478,20 +609,67 @@
    void
     ostree_deployment_set_bootconfig (OstreeDeployment *self,
                                       OstreeBootconfigParser *bootconfig);
    +

    Set or clear the bootloader configuration.

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + + + + +

    self

    Deployment

     

    bootconfig

    Bootloader configuration object.

    [nullable]
    +

    ostree_deployment_set_origin ()

    void
     ostree_deployment_set_origin (OstreeDeployment *self,
    -                              GKeyFile *origin);
    + GKeyFile *origin);
    +

    Replace the "origin", which is a description of the source +of the deployment and how to update to the next version.

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + + + + +

    self

    Deployment

     

    origin

    Set the origin for this deployment.

    [nullable]
    +

    ostree_deployment_origin_remove_transient_state ()

    void
     ostree_deployment_origin_remove_transient_state
    -                               (GKeyFile *origin);
    + (GKeyFile *origin);

    The intention of an origin file is primarily describe the "inputs" that resulted in a deployment, and it's commonly used to derive the new state. For example, a key value (in pure libostree mode) is the "refspec". However, @@ -545,7 +723,7 @@

    Returns

    New deep copy of self .

    -

    [transfer full]

    +

    [not nullable][transfer full]


    @@ -554,6 +732,11 @@
    const char *
     ostree_deployment_unlocked_state_to_string
                                    (OstreeDeploymentUnlockedState state);
    +
    +

    Returns

    +

    Description of state.

    +

    [not nullable]

    +

    Since: 2016.4

    @@ -623,7 +806,7 @@
     

    GKeyFile *origin;

    GKeyFile *origin;

    How to construct an upgraded version of this tree

     
     

    gboolean staged;

    gboolean staged;

    TRUE iff this deployment is staged

     
    -gboolean +gboolean ostree_diff_dirs () @@ -65,7 +65,7 @@
    -gboolean +gboolean ostree_diff_dirs_with_options () @@ -120,15 +120,15 @@

    ostree_diff_dirs ()

    -
    gboolean
    +
    gboolean
     ostree_diff_dirs (OstreeDiffFlags flags,
    -                  GFile *a,
    -                  GFile *b,
    -                  GPtrArray *modified,
    -                  GPtrArray *removed,
    -                  GPtrArray *added,
    -                  GCancellable *cancellable,
    -                  GError **error);
    + GFile *a, + GFile *b, + GPtrArray *modified, + GPtrArray *removed, + GPtrArray *added, + GCancellable *cancellable, + GError **error);

    Compute the difference between directory a and b as 3 separate @@ -152,7 +152,7 @@

    a

    First directory path, or NULL

    First directory path, or NULL

     

    a

    First directory path, or NULL

    First directory path, or NULL

     
    -gboolean +gboolean ostree_repo_file_ensure_resolved () @@ -48,7 +48,7 @@
    -gboolean +gboolean ostree_repo_file_get_xattrs () @@ -94,7 +94,7 @@
    -GVariant * +GVariant * ostree_repo_file_tree_get_contents () @@ -102,7 +102,7 @@
    -GVariant * +GVariant * ostree_repo_file_tree_get_metadata () @@ -125,7 +125,7 @@
    -gboolean +gboolean ostree_repo_file_tree_query_child () @@ -154,18 +154,18 @@

    Functions

    ostree_repo_file_ensure_resolved ()

    -
    gboolean
    +
    gboolean
     ostree_repo_file_ensure_resolved (OstreeRepoFile *self,
    -                                  GError **error);
    + GError **error);

    ostree_repo_file_get_xattrs ()

    -
    gboolean
    +
    gboolean
     ostree_repo_file_get_xattrs (OstreeRepoFile *self,
    -                             GVariant **out_xattrs,
    -                             GCancellable *cancellable,
    -                             GError **error);
    + GVariant **out_xattrs, + GCancellable *cancellable, + GError **error);

    Parameters

    @@ -227,7 +227,7 @@
    void
     ostree_repo_file_tree_set_metadata (OstreeRepoFile *self,
                                         const char *checksum,
    -                                    GVariant *metadata);
    + GVariant *metadata);
    @@ -246,13 +246,13 @@

    ostree_repo_file_tree_get_contents ()

    -
    GVariant *
    +
    GVariant *
     ostree_repo_file_tree_get_contents (OstreeRepoFile *self);

    ostree_repo_file_tree_get_metadata ()

    -
    GVariant *
    +
    GVariant *
     ostree_repo_file_tree_get_metadata (OstreeRepoFile *self);

    @@ -267,8 +267,8 @@
    int
     ostree_repo_file_tree_find_child (OstreeRepoFile *self,
                                       const char *name,
    -                                  gboolean *is_dir,
    -                                  GVariant **out_container);
    + gboolean *is_dir, + GVariant **out_container);

    Parameters

    @@ -305,14 +305,14 @@

    ostree_repo_file_tree_query_child ()

    -
    gboolean
    +
    gboolean
     ostree_repo_file_tree_query_child (OstreeRepoFile *self,
                                        int n,
                                        const char *attributes,
    -                                   GFileQueryInfoFlags flags,
    -                                   GFileInfo **out_info,
    -                                   GCancellable *cancellable,
    -                                   GError **error);
    + GFileQueryInfoFlags flags, + GFileInfo **out_info, + GCancellable *cancellable, + GError **error);

    Parameters

    @@ -357,6 +357,6 @@ +
    Generated by GTK-Doc V1.33.0 \ No newline at end of file diff -Nru ostree-2020.7/apidoc/html/ostree-OstreeRepo.html ostree-2020.8/apidoc/html/ostree-OstreeRepo.html --- ostree-2020.7/apidoc/html/ostree-OstreeRepo.html 2020-10-14 00:06:16.000000000 +0000 +++ ostree-2020.8/apidoc/html/ostree-OstreeRepo.html 2020-11-17 15:38:22.000000000 +0000 @@ -8,7 +8,7 @@ - + @@ -41,7 +41,7 @@ - - + + + + + + + + + + + + - - + + @@ -6523,12 +6648,12 @@ - + - + @@ -6547,14 +6672,14 @@

    ostree_repo_static_delta_execute_offline_with_signature ()

    -
    gboolean
    +
    gboolean
     ostree_repo_static_delta_execute_offline_with_signature
                                    (OstreeRepo *self,
    -                                GFile *dir_or_file,
    +                                GFile *dir_or_file,
                                     OstreeSign *sign,
    -                                gboolean skip_validation,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + gboolean skip_validation, + GCancellable *cancellable, + GError **error);

    Given a directory representing an already-downloaded static delta on disk, apply it, generating a new commit. If sign is passed, the static delta signature is verified. @@ -6589,7 +6714,7 @@

    - + @@ -6610,13 +6735,13 @@

    ostree_repo_static_delta_execute_offline ()

    -
    gboolean
    +
    gboolean
     ostree_repo_static_delta_execute_offline
                                    (OstreeRepo *self,
    -                                GFile *dir_or_file,
    -                                gboolean skip_validation,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + GFile *dir_or_file, + gboolean skip_validation, + GCancellable *cancellable, + GError **error);

    Given a directory representing an already-downloaded static delta on disk, apply it, generating a new commit. The directory must be named with the form "FROM-TO", where both are checksums, and it @@ -6642,7 +6767,7 @@

    - + @@ -6662,13 +6787,13 @@

    ostree_repo_static_delta_verify_signature ()

    -
    gboolean
    +
    gboolean
     ostree_repo_static_delta_verify_signature
                                    (OstreeRepo *self,
                                     const char *delta_id,
                                     OstreeSign *sign,
                                     char **out_success_message,
    -                                GError **error);
    + GError **error);

    Verify static delta file signature.

    Parameters

    @@ -6696,8 +6821,8 @@
    - - + + @@ -6717,9 +6842,9 @@

    ostree_repo_traverse_new_reachable ()

    -
    GHashTable *
    +
    GHashTable *
     ostree_repo_traverse_new_reachable (void);
    -

    This hash table is a set of GVariant which can be accessed via +

    This hash table is a set of GVariant which can be accessed via ostree_object_name_deserialize().

    Returns

    @@ -6730,11 +6855,11 @@

    ostree_repo_traverse_new_parents ()

    -
    GHashTable *
    +
    GHashTable *
     ostree_repo_traverse_new_parents (void);
    -

    This hash table is a mapping from GVariant which can be accessed -via ostree_object_name_deserialize() to a GVariant containing either -a similar GVariant or and array of them, listing the parents of the key.

    +

    This hash table is a mapping from GVariant which can be accessed +via ostree_object_name_deserialize() to a GVariant containing either +a similar GVariant or and array of them, listing the parents of the key.

    Returns

    A new hash table.

    @@ -6747,8 +6872,8 @@

    ostree_repo_traverse_parents_get_commits ()

    char **
     ostree_repo_traverse_parents_get_commits
    -                               (GHashTable *parents,
    -                                GVariant *object);
    + (GHashTable *parents, + GVariant *object);

    Gets all the commits that a certain object belongs to, as recorded by a parents table gotten from ostree_repo_traverse_commit_union_with_parents.

    @@ -6762,13 +6887,13 @@

    ostree_repo_traverse_commit ()

    -
    gboolean
    +
    gboolean
     ostree_repo_traverse_commit (OstreeRepo *repo,
                                  const char *commit_checksum,
                                  int maxdepth,
    -                             GHashTable **out_reachable,
    -                             GCancellable *cancellable,
    -                             GError **error);
    + GHashTable **out_reachable, + GCancellable *cancellable, + GError **error);

    Create a new set out_reachable containing all objects reachable from commit_checksum @@ -6820,13 +6945,13 @@


    ostree_repo_traverse_commit_union ()

    -
    gboolean
    +
    gboolean
     ostree_repo_traverse_commit_union (OstreeRepo *repo,
                                        const char *commit_checksum,
                                        int maxdepth,
    -                                   GHashTable *inout_reachable,
    -                                   GCancellable *cancellable,
    -                                   GError **error);
    + GHashTable *inout_reachable, + GCancellable *cancellable, + GError **error);

    Update the set inout_reachable containing all objects reachable from commit_checksum @@ -6879,15 +7004,15 @@


    ostree_repo_traverse_commit_union_with_parents ()

    -
    gboolean
    +
    gboolean
     ostree_repo_traverse_commit_union_with_parents
                                    (OstreeRepo *repo,
                                     const char *commit_checksum,
                                     int maxdepth,
    -                                GHashTable *inout_reachable,
    -                                GHashTable *inout_parents,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + GHashTable *inout_reachable, + GHashTable *inout_parents, + GCancellable *cancellable, + GError **error);

    Update the set inout_reachable containing all objects reachable from commit_checksum @@ -7047,13 +7172,13 @@


    ostree_repo_commit_traverse_iter_init_commit ()

    -
    gboolean
    +
    gboolean
     ostree_repo_commit_traverse_iter_init_commit
                                    (OstreeRepoCommitTraverseIter *iter,
                                     OstreeRepo *repo,
    -                                GVariant *commit,
    +                                GVariant *commit,
                                     OstreeRepoCommitTraverseFlags flags,
    -                                GError **error);
    + GError **error);

    Initialize (in place) an iterator over the root of a commit object.

    Parameters

    @@ -7096,13 +7221,13 @@

    ostree_repo_commit_traverse_iter_init_dirtree ()

    -
    gboolean
    +
    gboolean
     ostree_repo_commit_traverse_iter_init_dirtree
                                    (OstreeRepoCommitTraverseIter *iter,
                                     OstreeRepo *repo,
    -                                GVariant *dirtree,
    +                                GVariant *dirtree,
                                     OstreeRepoCommitTraverseFlags flags,
    -                                GError **error);
    + GError **error);

    Initialize (in place) an iterator over a directory tree.

    Parameters

    @@ -7147,8 +7272,8 @@

    ostree_repo_commit_traverse_iter_next ()

    OstreeRepoCommitIterResult
     ostree_repo_commit_traverse_iter_next (OstreeRepoCommitTraverseIter *iter,
    -                                       GCancellable *cancellable,
    -                                       GError **error);
    + GCancellable *cancellable, + GError **error);

    Step the interator to the next item. Files will be returned first, then subdirectories. Call this in a loop; upon encountering OSTREE_REPO_COMMIT_ITER_RESULT_END, there will be no more files or @@ -7192,15 +7317,15 @@


    ostree_repo_prune ()

    -
    gboolean
    +
    gboolean
     ostree_repo_prune (OstreeRepo *self,
                        OstreeRepoPruneFlags flags,
    -                   gint depth,
    -                   gint *out_objects_total,
    -                   gint *out_objects_pruned,
    -                   guint64 *out_pruned_object_size_total,
    -                   GCancellable *cancellable,
    -                   GError **error);
    + gint depth, + gint *out_objects_total, + gint *out_objects_pruned, + guint64 *out_pruned_object_size_total, + GCancellable *cancellable, + GError **error);

    Delete content from the repository. By default, this function will only delete "orphaned" objects not referred to by any commit. This can happen during a local commit operation, when we have written @@ -7270,11 +7395,11 @@


    ostree_repo_prune_static_deltas ()

    -
    gboolean
    +
    gboolean
     ostree_repo_prune_static_deltas (OstreeRepo *self,
                                      const char *commit,
    -                                 GCancellable *cancellable,
    -                                 GError **error);
    + GCancellable *cancellable, + GError **error);

    Prune static deltas, if COMMIT is specified then delete static delta files only targeting that commit; otherwise any static delta of non existing commits are deleted.

    @@ -7295,7 +7420,7 @@
    - @@ -7316,12 +7441,12 @@

    ostree_repo_traverse_reachable_refs ()

    -
    gboolean
    +
    gboolean
     ostree_repo_traverse_reachable_refs (OstreeRepo *self,
    -                                     guint depth,
    -                                     GHashTable *reachable,
    -                                     GCancellable *cancellable,
    -                                     GError **error);
    + guint depth, + GHashTable *reachable, + GCancellable *cancellable, + GError **error);

    Add all commit objects directly reachable via a ref to reachable .

    Locking: shared

    @@ -7367,14 +7492,14 @@

    ostree_repo_prune_from_reachable ()

    -
    gboolean
    +
    gboolean
     ostree_repo_prune_from_reachable (OstreeRepo *self,
                                       OstreeRepoPruneOptions *options,
    -                                  gint *out_objects_total,
    -                                  gint *out_objects_pruned,
    -                                  guint64 *out_pruned_object_size_total,
    -                                  GCancellable *cancellable,
    -                                  GError **error);
    + gint *out_objects_total, + gint *out_objects_pruned, + guint64 *out_pruned_object_size_total, + GCancellable *cancellable, + GError **error);

    Delete content from the repository. This function is the "backend" half of the higher level ostree_repo_prune(). To use this function, you determine the root set yourself, and this function finds all other @@ -7437,14 +7562,14 @@


    ostree_repo_pull ()

    -
    gboolean
    +
    gboolean
     ostree_repo_pull (OstreeRepo *self,
                       const char *remote_name,
                       char **refs_to_fetch,
                       OstreeRepoPullFlags flags,
                       OstreeAsyncProgress *progress,
    -                  GCancellable *cancellable,
    -                  GError **error);
    + GCancellable *cancellable, + GError **error);

    Connect to the remote repository, fetching the specified set of refs refs_to_fetch . For each ref that is changed, download the @@ -7454,7 +7579,7 @@

    If flags contains OSTREE_REPO_PULL_FLAGS_MIRROR, and the refs_to_fetch - is NULL, and the remote repository contains a + is NULL, and the remote repository contains a summary file, then all refs will be fetched.

    If flags contains OSTREE_REPO_PULL_FLAGS_COMMIT_ONLY, then only the @@ -7462,7 +7587,7 @@ is pulled.

    Warning: This API will iterate the thread default main context, which is a bug, but kept for compatibility reasons. If you want to -avoid this, use g_main_context_push_thread_default() to push a new +avoid this, use g_main_context_push_thread_default() to push a new one around this call.

    Parameters

    @@ -7485,7 +7610,7 @@
    - + @@ -7515,15 +7640,15 @@

    ostree_repo_pull_one_dir ()

    -
    gboolean
    +
    gboolean
     ostree_repo_pull_one_dir (OstreeRepo *self,
                               const char *remote_name,
                               const char *dir_to_pull,
                               char **refs_to_fetch,
                               OstreeRepoPullFlags flags,
                               OstreeAsyncProgress *progress,
    -                          GCancellable *cancellable,
    -                          GError **error);
    + GCancellable *cancellable, + GError **error);

    This is similar to ostree_repo_pull(), but only fetches a single subpath.

    @@ -7552,7 +7677,7 @@
    - + @@ -7582,13 +7707,13 @@

    ostree_repo_pull_with_options ()

    -
    gboolean
    +
    gboolean
     ostree_repo_pull_with_options (OstreeRepo *self,
                                    const char *remote_name_or_baseurl,
    -                               GVariant *options,
    +                               GVariant *options,
                                    OstreeAsyncProgress *progress,
    -                               GCancellable *cancellable,
    -                               GError **error);
    + GCancellable *cancellable, + GError **error);

    Like ostree_repo_pull(), but supports an extensible set of flags. The following are currently defined:

      @@ -7680,7 +7805,7 @@
      void
       ostree_repo_pull_default_console_progress_changed
                                      (OstreeAsyncProgress *progress,
      -                                gpointer user_data);
      + gpointer user_data);

      Convenient "changed" callback for use with ostree_async_progress_new_and_connect() when pulling from a remote repository.

      @@ -7719,13 +7844,13 @@

      ostree_repo_sign_commit ()

      -
      gboolean
      +
      gboolean
       ostree_repo_sign_commit (OstreeRepo *self,
      -                         const gchar *commit_checksum,
      -                         const gchar *key_id,
      -                         const gchar *homedir,
      -                         GCancellable *cancellable,
      -                         GError **error);
      + const gchar *commit_checksum, + const gchar *key_id, + const gchar *homedir, + GCancellable *cancellable, + GError **error);

      Add a GPG signature to a commit.

      Parameters

      @@ -7753,17 +7878,17 @@
    - + - + - + @@ -7773,12 +7898,12 @@

    ostree_repo_append_gpg_signature ()

    -
    gboolean
    +
    gboolean
     ostree_repo_append_gpg_signature (OstreeRepo *self,
    -                                  const gchar *commit_checksum,
    -                                  GBytes *signature_bytes,
    -                                  GCancellable *cancellable,
    -                                  GError **error);
    + const gchar *commit_checksum, + GBytes *signature_bytes, + GCancellable *cancellable, + GError **error);

    Append a GPG signature to a commit.

    Parameters

    @@ -7806,12 +7931,12 @@
    - + - + @@ -7821,12 +7946,12 @@

    ostree_repo_add_gpg_signature_summary ()

    -
    gboolean
    +
    gboolean
     ostree_repo_add_gpg_signature_summary (OstreeRepo *self,
    -                                       const gchar **key_id,
    -                                       const gchar *homedir,
    -                                       GCancellable *cancellable,
    -                                       GError **error);
    + const gchar **key_id, + const gchar *homedir, + GCancellable *cancellable, + GError **error);

    Add a GPG signature to a summary file.

    Parameters

    @@ -7849,17 +7974,17 @@
    - + - + - + @@ -7868,23 +7993,104 @@
    +

    ostree_repo_gpg_sign_data ()

    +
    gboolean
    +ostree_repo_gpg_sign_data (OstreeRepo *self,
    +                           GBytes *data,
    +                           GBytes *old_signatures,
    +                           const gchar **key_id,
    +                           const gchar *homedir,
    +                           GBytes **out_signatures,
    +                           GCancellable *cancellable,
    +                           GError **error);
    +

    Sign the given data + with the specified keys in key_id +. Similar to +ostree_repo_add_gpg_signature_summary() but can be used on any +data.

    +

    You can use ostree_repo_gpg_verify_data() to verify the signatures.

    +
    +

    Parameters

    +
    -gboolean +gboolean ostree_repo_mode_from_string () @@ -81,7 +81,7 @@
    -gboolean +gboolean ostree_repo_open () @@ -97,7 +97,7 @@
    -gboolean +gboolean ostree_repo_get_disable_fsync () @@ -105,7 +105,7 @@
    -gboolean +gboolean ostree_repo_is_system () @@ -113,7 +113,7 @@
    -gboolean +gboolean ostree_repo_is_writable () @@ -129,14 +129,14 @@
    -gboolean +gboolean ostree_repo_create ()
    const gchar * +const gchar * ostree_repo_get_bootloader () @@ -144,7 +144,7 @@
    -GFile * +GFile * ostree_repo_get_path () @@ -160,7 +160,7 @@
    -gboolean +gboolean ostree_repo_get_min_free_space_bytes () @@ -168,7 +168,7 @@
    -GKeyFile * +GKeyFile * ostree_repo_get_config () @@ -183,7 +183,7 @@
    const gchar * const * +const gchar * const * ostree_repo_get_default_repo_finders () @@ -191,7 +191,7 @@
    -guint +guint ostree_repo_hash () @@ -199,7 +199,7 @@
    -gboolean +gboolean ostree_repo_equal () @@ -207,7 +207,7 @@
    -GKeyFile * +GKeyFile * ostree_repo_copy_config () @@ -215,7 +215,7 @@
    -gboolean +gboolean ostree_repo_remote_add () @@ -223,7 +223,7 @@
    -gboolean +gboolean ostree_repo_remote_delete () @@ -231,7 +231,7 @@
    -gboolean +gboolean ostree_repo_remote_change () @@ -247,7 +247,7 @@
    -gboolean +gboolean ostree_repo_remote_get_url () @@ -255,7 +255,7 @@
    -gboolean +gboolean ostree_repo_remote_get_gpg_verify () @@ -263,7 +263,7 @@
    -gboolean +gboolean ostree_repo_remote_get_gpg_verify_summary () @@ -271,7 +271,7 @@
    -gboolean +gboolean ostree_repo_remote_gpg_import () @@ -279,7 +279,7 @@
    -gboolean +gboolean ostree_repo_remote_fetch_summary () @@ -287,7 +287,7 @@
    -gboolean +gboolean ostree_repo_remote_fetch_summary_with_options () @@ -295,7 +295,7 @@
    -gboolean +gboolean ostree_repo_reload_config () @@ -303,7 +303,7 @@
    -gboolean +gboolean ostree_repo_get_remote_boolean_option () @@ -311,7 +311,7 @@
    -gboolean +gboolean ostree_repo_get_remote_list_option () @@ -319,7 +319,7 @@
    -gboolean +gboolean ostree_repo_get_remote_option () @@ -335,7 +335,7 @@
    -gboolean +gboolean ostree_repo_write_config () @@ -343,7 +343,7 @@
    -gboolean +gboolean ostree_repo_scan_hardlinks () @@ -351,7 +351,7 @@
    -gboolean +gboolean ostree_repo_prepare_transaction () @@ -359,7 +359,7 @@
    -gboolean +gboolean ostree_repo_commit_transaction () @@ -367,7 +367,7 @@
    -gboolean +gboolean ostree_repo_abort_transaction () @@ -391,7 +391,7 @@
    -gboolean +gboolean ostree_repo_set_ref_immediate () @@ -399,7 +399,7 @@
    -gboolean +gboolean ostree_repo_set_alias_ref_immediate () @@ -407,7 +407,7 @@
    -gboolean +gboolean ostree_repo_set_cache_dir () @@ -415,7 +415,7 @@
    -gboolean +gboolean ostree_repo_sign_delta () @@ -423,7 +423,7 @@
    -gboolean +gboolean ostree_repo_has_object () @@ -431,7 +431,7 @@
    -gboolean +gboolean ostree_repo_mark_commit_partial () @@ -439,7 +439,7 @@
    -gboolean +gboolean ostree_repo_mark_commit_partial_reason () @@ -447,7 +447,7 @@
    -gboolean +gboolean ostree_repo_write_metadata () @@ -463,7 +463,7 @@
    -gboolean +gboolean ostree_repo_write_metadata_finish () @@ -471,7 +471,7 @@
    -gboolean +gboolean ostree_repo_write_content () @@ -479,7 +479,7 @@
    -gboolean +gboolean ostree_repo_write_metadata_trusted () @@ -487,7 +487,7 @@
    -gboolean +gboolean ostree_repo_write_metadata_stream_trusted () @@ -495,7 +495,7 @@
    -gboolean +gboolean ostree_repo_write_content_trusted () @@ -511,7 +511,7 @@
    -gboolean +gboolean ostree_repo_write_content_finish () @@ -519,7 +519,7 @@
    -gboolean +gboolean ostree_repo_resolve_rev () @@ -527,7 +527,7 @@
    -gboolean +gboolean ostree_repo_resolve_rev_ext () @@ -535,7 +535,7 @@
    -gboolean +gboolean ostree_repo_list_refs () @@ -543,7 +543,7 @@
    -gboolean +gboolean ostree_repo_list_refs_ext () @@ -551,7 +551,7 @@
    -gboolean +gboolean ostree_repo_remote_list_refs () @@ -559,7 +559,7 @@
    -gboolean +gboolean ostree_repo_load_variant () @@ -567,7 +567,7 @@
    -gboolean +gboolean ostree_repo_load_commit () @@ -575,7 +575,7 @@
    -gboolean +gboolean ostree_repo_load_variant_if_exists () @@ -583,7 +583,7 @@
    -gboolean +gboolean ostree_repo_load_file () @@ -591,7 +591,7 @@
    -gboolean +gboolean ostree_repo_load_object_stream () @@ -599,7 +599,7 @@
    -gboolean +gboolean ostree_repo_query_object_storage_size () @@ -607,7 +607,7 @@
    -gboolean +gboolean ostree_repo_import_object_from () @@ -615,7 +615,7 @@
    -gboolean +gboolean ostree_repo_import_object_from_with_trust () @@ -623,7 +623,7 @@
    -gboolean +gboolean ostree_repo_import_archive_to_mtree () @@ -631,7 +631,7 @@
    -gboolean +gboolean ostree_repo_export_tree_to_archive () @@ -639,7 +639,7 @@
    -gboolean +gboolean ostree_repo_delete_object () @@ -647,7 +647,7 @@
    -gboolean +gboolean ostree_repo_fsck_object () @@ -671,7 +671,7 @@
    -GVariant * +GVariant * (*OstreeRepoCommitModifierXattrCallback) () @@ -695,7 +695,7 @@
    -gboolean +gboolean ostree_repo_commit_modifier_set_sepolicy_from_commit () @@ -751,7 +751,7 @@
    -GType +GType ostree_repo_devino_cache_get_type () @@ -759,7 +759,7 @@
    -gboolean +gboolean ostree_repo_write_directory_to_mtree () @@ -767,7 +767,7 @@
    -gboolean +gboolean ostree_repo_write_dfd_to_mtree () @@ -775,7 +775,7 @@
    -gboolean +gboolean ostree_repo_write_archive_to_mtree () @@ -783,7 +783,7 @@
    -gboolean +gboolean ostree_repo_write_archive_to_mtree_from_fd () @@ -791,7 +791,7 @@
    -gboolean +gboolean ostree_repo_write_mtree () @@ -799,7 +799,7 @@
    -gboolean +gboolean ostree_repo_write_commit () @@ -807,7 +807,7 @@
    -gboolean +gboolean ostree_repo_write_commit_with_time () @@ -815,7 +815,7 @@
    -gboolean +gboolean ostree_repo_read_commit_detached_metadata () @@ -823,7 +823,7 @@
    -gboolean +gboolean ostree_repo_write_commit_detached_metadata () @@ -839,7 +839,7 @@
    -gboolean +gboolean ostree_repo_checkout_tree () @@ -847,7 +847,7 @@
    -gboolean +gboolean ostree_repo_checkout_tree_at () @@ -855,7 +855,7 @@
    -gboolean +gboolean ostree_repo_checkout_at () @@ -863,7 +863,7 @@
    -gboolean +gboolean ostree_repo_checkout_gc () @@ -871,7 +871,7 @@
    -gboolean +gboolean ostree_repo_read_commit () @@ -879,7 +879,7 @@
    -gboolean +gboolean ostree_repo_list_objects () @@ -887,7 +887,7 @@
    -gboolean +gboolean ostree_repo_list_commit_objects_starting_with () @@ -895,7 +895,7 @@
    -gboolean +gboolean ostree_repo_list_static_delta_names () @@ -903,7 +903,23 @@
    -gboolean +gboolean + +ostree_repo_list_static_delta_indexes () +
    +gboolean + +ostree_repo_static_delta_reindex () +
    +gboolean ostree_repo_static_delta_generate () @@ -911,7 +927,7 @@
    -gboolean +gboolean ostree_repo_static_delta_execute_offline_with_signature () @@ -919,7 +935,7 @@
    -gboolean +gboolean ostree_repo_static_delta_execute_offline () @@ -927,7 +943,7 @@
    -gboolean +gboolean ostree_repo_static_delta_verify_signature () @@ -935,7 +951,7 @@
    -GHashTable * +GHashTable * ostree_repo_traverse_new_reachable () @@ -943,7 +959,7 @@
    -GHashTable * +GHashTable * ostree_repo_traverse_new_parents () @@ -959,7 +975,7 @@
    -gboolean +gboolean ostree_repo_traverse_commit () @@ -967,7 +983,7 @@
    -gboolean +gboolean ostree_repo_traverse_commit_union () @@ -975,7 +991,7 @@
    -gboolean +gboolean ostree_repo_traverse_commit_union_with_parents () @@ -1015,7 +1031,7 @@
    -gboolean +gboolean ostree_repo_commit_traverse_iter_init_commit () @@ -1023,7 +1039,7 @@
    -gboolean +gboolean ostree_repo_commit_traverse_iter_init_dirtree () @@ -1039,7 +1055,7 @@
    -gboolean +gboolean ostree_repo_prune () @@ -1047,7 +1063,7 @@
    -gboolean +gboolean ostree_repo_prune_static_deltas () @@ -1055,7 +1071,7 @@
    -gboolean +gboolean ostree_repo_traverse_reachable_refs () @@ -1063,7 +1079,7 @@
    -gboolean +gboolean ostree_repo_prune_from_reachable () @@ -1071,7 +1087,7 @@
    -gboolean +gboolean ostree_repo_pull () @@ -1079,7 +1095,7 @@
    -gboolean +gboolean ostree_repo_pull_one_dir () @@ -1087,7 +1103,7 @@
    -gboolean +gboolean ostree_repo_pull_with_options () @@ -1103,7 +1119,7 @@
    -gboolean +gboolean ostree_repo_sign_commit () @@ -1111,7 +1127,7 @@
    -gboolean +gboolean ostree_repo_append_gpg_signature () @@ -1119,7 +1135,7 @@
    -gboolean +gboolean ostree_repo_add_gpg_signature_summary () @@ -1127,6 +1143,14 @@
    +gboolean + +ostree_repo_gpg_sign_data () +
    OstreeGpgVerifyResult * @@ -1135,7 +1159,7 @@
    -gboolean +gboolean ostree_repo_verify_commit () @@ -1167,7 +1191,7 @@
    -gboolean +gboolean ostree_repo_regenerate_summary () @@ -1315,10 +1339,10 @@

    Functions

    ostree_repo_mode_from_string ()

    -
    gboolean
    +
    gboolean
     ostree_repo_mode_from_string (const char *mode,
                                   OstreeRepoMode *out_mode,
    -                              GError **error);
    + GError **error);

    Parameters

    @@ -1340,7 +1364,7 @@ - + @@ -1353,8 +1377,8 @@
    OstreeRepo *
     ostree_repo_open_at (int dfd,
                          const char *path,
    -                     GCancellable *cancellable,
    -                     GError **error);
    + GCancellable *cancellable, + GError **error);

    This combines ostree_repo_new() (but using fd-relative access) with ostree_repo_open(). Use this when you know you should be operating on an already extant repository. If you want to create one, use ostree_repo_create_at().

    @@ -1393,7 +1417,7 @@

    ostree_repo_new ()

    OstreeRepo *
    -ostree_repo_new (GFile *path);
    +ostree_repo_new (GFile *path);

    Parameters

    error

    a GError if the string is not a valid mode

    a GError if the string is not a valid mode

     
    @@ -1420,8 +1444,8 @@

    ostree_repo_new_for_sysroot_path ()

    OstreeRepo *
    -ostree_repo_new_for_sysroot_path (GFile *repo_path,
    -                                  GFile *sysroot_path);
    +ostree_repo_new_for_sysroot_path (GFile *repo_path, + GFile *sysroot_path);

    Creates a new OstreeRepo instance, taking the system root path explicitly instead of assuming "/".

    @@ -1472,17 +1496,17 @@

    ostree_repo_open ()

    -
    gboolean
    +
    gboolean
     ostree_repo_open (OstreeRepo *self,
    -                  GCancellable *cancellable,
    -                  GError **error);
    + GCancellable *cancellable, + GError **error);

    ostree_repo_set_disable_fsync ()

    void
     ostree_repo_set_disable_fsync (OstreeRepo *self,
    -                               gboolean disable_fsync);
    + gboolean disable_fsync);

    Disable requests to fsync() to stable storage during commits. This option should only be used by build system tools which are creating disposable virtual machines, or have higher level mechanisms for @@ -1503,7 +1527,7 @@

    - + @@ -1513,7 +1537,7 @@

    ostree_repo_get_disable_fsync ()

    -
    gboolean
    +
    gboolean
     ostree_repo_get_disable_fsync (OstreeRepo *self);

    For more information see ostree_repo_set_disable_fsync().

    @@ -1539,7 +1563,7 @@

    ostree_repo_is_system ()

    -
    gboolean
    +
    gboolean
     ostree_repo_is_system (OstreeRepo *repo);

    Parameters

    @@ -1558,15 +1582,15 @@

    Returns

    -

    TRUE if this repository is the root-owned system global repository

    +

    TRUE if this repository is the root-owned system global repository


    ostree_repo_is_writable ()

    -
    gboolean
    +
    gboolean
     ostree_repo_is_writable (OstreeRepo *self,
    -                         GError **error);
    + GError **error);

    Returns whether the repository is writable by the current user. If the repository is not writable, the error indicates why.

    @@ -1586,7 +1610,7 @@
    - + @@ -1594,7 +1618,7 @@

    Returns

    -

    TRUE if this repository is writable

    +

    TRUE if this repository is writable


    @@ -1604,9 +1628,9 @@ ostree_repo_create_at (int dfd, const char *path, OstreeRepoMode mode, - GVariant *options, - GCancellable *cancellable, - GError **error); + GVariant *options, + GCancellable *cancellable, + GError **error);

    This is a file-descriptor relative version of ostree_repo_create(). Create the underlying structure on disk for the repository, and call ostree_repo_open_at() on the result, preparing it for use.

    @@ -1671,11 +1695,11 @@

    ostree_repo_create ()

    -
    gboolean
    +
    gboolean
     ostree_repo_create (OstreeRepo *self,
                         OstreeRepoMode mode,
    -                    GCancellable *cancellable,
    -                    GError **error);
    + GCancellable *cancellable, + GError **error);

    Create the underlying structure on disk for the repository, and call ostree_repo_open() on the result, preparing it for use.

    Since version 2016.8, this function will succeed on an existing @@ -1723,7 +1747,7 @@


    ostree_repo_get_bootloader ()

    -
    const gchar *
    +
    const gchar *
     ostree_repo_get_bootloader (OstreeRepo *self);

    Get the bootloader configured. See the documentation for the "sysroot.bootloader" config key.

    @@ -1744,14 +1768,15 @@

    Returns

    -

    bootloader configuration for the sysroot

    +

    bootloader configuration for the sysroot.

    +

    [transfer none]

    Since: 2019.2


    ostree_repo_get_path ()

    -
    GFile *
    +
    GFile *
     ostree_repo_get_path (OstreeRepo *self);

    Note that since the introduction of ostree_repo_open_at(), this function may return a process-specific path in /proc if the repository was created using @@ -1786,10 +1811,10 @@


    ostree_repo_get_min_free_space_bytes ()

    -
    gboolean
    +
    gboolean
     ostree_repo_get_min_free_space_bytes (OstreeRepo *self,
    -                                      guint64 *out_reserved_bytes,
    -                                      GError **error);
    + guint64 *out_reserved_bytes, + GError **error);

    Determine the number of bytes of free disk space that are reserved according to the repo config and return that number in out_reserved_bytes . See the @@ -1816,7 +1841,7 @@

    - + @@ -1824,14 +1849,14 @@

    Returns

    -

    TRUE on success, FALSE otherwise.

    +

    TRUE on success, FALSE otherwise.

    Since: 2018.9


    ostree_repo_get_config ()

    -
    GKeyFile *
    +
    GKeyFile *
     ostree_repo_get_config (OstreeRepo *self);

    Returns

    @@ -1873,7 +1898,7 @@

    ostree_repo_get_default_repo_finders ()

    -
    const gchar * const *
    +
    const gchar * const *
     ostree_repo_get_default_repo_finders (OstreeRepo *self);

    Get the set of default repo finders configured. See the documentation for the "core.default-repo-finders" config key.

    @@ -1894,7 +1919,7 @@

    Returns

    -

    NULL-terminated array of strings.

    +

    NULL-terminated array of strings.

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

    Since: 2018.9

    @@ -1902,7 +1927,7 @@

    ostree_repo_hash ()

    -
    guint
    +
    guint
     ostree_repo_hash (OstreeRepo *self);

    Calculate a hash value for the given open repository, suitable for use when putting it into a hash table. It is an error to call this on an OstreeRepo @@ -1933,14 +1958,14 @@


    ostree_repo_equal ()

    -
    gboolean
    +
    gboolean
     ostree_repo_equal (OstreeRepo *a,
                        OstreeRepo *b);

    Check whether two opened repositories are the same on disk: if their root directories are the same inode. If a or b are not open yet (due to -ostree_repo_open() not being called on them yet), FALSE will be returned.

    +ostree_repo_open() not being called on them yet), FALSE will be returned.

    Parameters

    disable_fsync

    If TRUE, do not fsync

    If TRUE, do not fsync

     

    error

    a GError

    a GError

     

    error

    Return location for a GError

    Return location for a GError

     
    @@ -1965,16 +1990,16 @@

    Returns

    -

    TRUE if a +

    TRUE if a and b -are the same repository on disk, FALSE otherwise

    +are the same repository on disk, FALSE otherwise

    Since: 2017.12


    ostree_repo_copy_config ()

    -
    GKeyFile *
    +
    GKeyFile *
     ostree_repo_copy_config (OstreeRepo *self);

    Returns

    @@ -1985,24 +2010,24 @@

    ostree_repo_remote_add ()

    -
    gboolean
    +
    gboolean
     ostree_repo_remote_add (OstreeRepo *self,
                             const char *name,
                             const char *url,
    -                        GVariant *options,
    -                        GCancellable *cancellable,
    -                        GError **error);
    + GVariant *options, + GCancellable *cancellable, + GError **error);

    Create a new remote named name pointing to url . If options is -provided, then it will be mapped to GKeyFile entries, where the +provided, then it will be mapped to GKeyFile entries, where the GVariant dictionary key is an option string, and the value is mapped as follows:

    Parameters

    @@ -2050,11 +2075,11 @@

    ostree_repo_remote_delete ()

    -
    gboolean
    +
    gboolean
     ostree_repo_remote_delete (OstreeRepo *self,
                                const char *name,
    -                           GCancellable *cancellable,
    -                           GError **error);
    + GCancellable *cancellable, + GError **error);

    Delete the remote named name . It is an error if the provided remote does not exist.

    @@ -2094,15 +2119,15 @@

    ostree_repo_remote_change ()

    -
    gboolean
    +
    gboolean
     ostree_repo_remote_change (OstreeRepo *self,
    -                           GFile *sysroot,
    +                           GFile *sysroot,
                                OstreeRepoRemoteChange changeop,
                                const char *name,
                                const char *url,
    -                           GVariant *options,
    -                           GCancellable *cancellable,
    -                           GError **error);
    + GVariant *options, + GCancellable *cancellable, + GError **error);

    A combined function handling the equivalent of ostree_repo_remote_add(), ostree_repo_remote_delete(), with more options.

    @@ -2164,9 +2189,9 @@

    ostree_repo_remote_list ()

    char **
     ostree_repo_remote_list (OstreeRepo *self,
    -                         guint *out_n_remotes);
    + guint *out_n_remotes);

    List available remote names in an OstreeRepo. Remote names are sorted -alphabetically. If no remotes are available the function returns NULL.

    +alphabetically. If no remotes are available the function returns NULL.

    Parameters

    @@ -2191,7 +2216,7 @@

    Returns

    -

    a NULL-terminated +

    a NULL-terminated array of remote names.

    [array length=out_n_remotes][transfer full]

    @@ -2199,11 +2224,11 @@

    ostree_repo_remote_get_url ()

    -
    gboolean
    +
    gboolean
     ostree_repo_remote_get_url (OstreeRepo *self,
                                 const char *name,
                                 char **out_url,
    -                            GError **error);
    + GError **error);

    Return the URL of the remote named name through out_url . It is an @@ -2242,17 +2267,17 @@

    Returns

    -

    TRUE on success, FALSE on failure

    +

    TRUE on success, FALSE on failure


    ostree_repo_remote_get_gpg_verify ()

    -
    gboolean
    +
    gboolean
     ostree_repo_remote_get_gpg_verify (OstreeRepo *self,
                                        const char *name,
    -                                   gboolean *out_gpg_verify,
    -                                   GError **error);
    + gboolean *out_gpg_verify, + GError **error);

    Return whether GPG verification is enabled for the remote named name through out_gpg_verify @@ -2292,18 +2317,18 @@

    Returns

    -

    TRUE on success, FALSE on failure

    +

    TRUE on success, FALSE on failure


    ostree_repo_remote_get_gpg_verify_summary ()

    -
    gboolean
    +
    gboolean
     ostree_repo_remote_get_gpg_verify_summary
                                    (OstreeRepo *self,
                                     const char *name,
    -                                gboolean *out_gpg_verify_summary,
    -                                GError **error);
    + gboolean *out_gpg_verify_summary, + GError **error);

    Return whether GPG verification of the summary is enabled for the remote named name through out_gpg_verify_summary @@ -2343,27 +2368,27 @@

    Returns

    -

    TRUE on success, FALSE on failure

    +

    TRUE on success, FALSE on failure


    ostree_repo_remote_gpg_import ()

    -
    gboolean
    +
    gboolean
     ostree_repo_remote_gpg_import (OstreeRepo *self,
                                    const char *name,
    -                               GInputStream *source_stream,
    +                               GInputStream *source_stream,
                                    const char * const *key_ids,
    -                               guint *out_imported,
    -                               GCancellable *cancellable,
    -                               GError **error);
    + guint *out_imported, + GCancellable *cancellable, + GError **error);

    Imports one or more GPG keys from the open source_stream , or from the user's personal keyring if source_stream - is NULL. The key_ids + is NULL. The key_ids array can optionally restrict which keys are imported. If key_ids - is NULL, + is NULL, then all keys are imported.

    The imported keys will be used to conduct GPG verification when pulling from the remote named name @@ -2389,28 +2414,28 @@

    - + - + +keys, or NULL.

    - + - + @@ -2418,19 +2443,19 @@

    Returns

    -

    TRUE on success, FALSE on failure

    +

    TRUE on success, FALSE on failure


    ostree_repo_remote_fetch_summary ()

    -
    gboolean
    +
    gboolean
     ostree_repo_remote_fetch_summary (OstreeRepo *self,
                                       const char *name,
    -                                  GBytes **out_summary,
    -                                  GBytes **out_signatures,
    -                                  GCancellable *cancellable,
    -                                  GError **error);
    + GBytes **out_summary, + GBytes **out_signatures, + GCancellable *cancellable, + GError **error);

    Tries to fetch the summary file and any GPG signatures on the summary file over HTTP, and returns the binary data in out_summary and out_signatures @@ -2442,10 +2467,10 @@ . Likewise if the summary file is not signed, out_signatures is set to NULL -. In either case the function still returns TRUE.

    +. In either case the function still returns TRUE.

    This method does not verify the signature of the downloaded summary file. Use ostree_repo_verify_summary() for that.

    -

    Parse the summary data into a GVariant using g_variant_new_from_bytes() +

    Parse the summary data into a GVariant using g_variant_new_from_bytes() with OSTREE_SUMMARY_GVARIANT_FORMAT as the format string.

    Parameters

    @@ -2469,23 +2494,23 @@
    +NULL.

    +signature data, or NULL.

    - + - + @@ -2493,21 +2518,21 @@

    Returns

    -

    TRUE on success, FALSE on failure

    +

    TRUE on success, FALSE on failure


    ostree_repo_remote_fetch_summary_with_options ()

    -
    gboolean
    +
    gboolean
     ostree_repo_remote_fetch_summary_with_options
                                    (OstreeRepo *self,
                                     const char *name,
    -                                GVariant *options,
    -                                GBytes **out_summary,
    -                                GBytes **out_signatures,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + GVariant *options, + GBytes **out_summary, + GBytes **out_signatures, + GCancellable *cancellable, + GError **error);

    Like ostree_repo_remote_fetch_summary(), but supports an extensible set of flags. The following are currently defined:

      @@ -2545,23 +2570,23 @@
    +NULL.

    +signature data, or NULL.

    - + - + @@ -2569,17 +2594,17 @@

    Returns

    -

    TRUE on success, FALSE on failure

    +

    TRUE on success, FALSE on failure

    Since: 2016.6


    ostree_repo_reload_config ()

    -
    gboolean
    +
    gboolean
     ostree_repo_reload_config (OstreeRepo *self,
    -                           GCancellable *cancellable,
    -                           GError **error);
    + GCancellable *cancellable, + GError **error);

    By default, an OstreeRepo will cache the remote configuration and its own repo/config data. This API can be used to reload it.

    @@ -2614,13 +2639,13 @@

    ostree_repo_get_remote_boolean_option ()

    -
    gboolean
    +
    gboolean
     ostree_repo_get_remote_boolean_option (OstreeRepo *self,
                                            const char *remote_name,
                                            const char *option_name,
    -                                       gboolean default_value,
    -                                       gboolean *out_value,
    -                                       GError **error);
    + gboolean default_value, + gboolean *out_value, + GError **error);

    OSTree remotes are represented by keyfile groups, formatted like: [remote "remotename"]. This function returns a value named option_name @@ -2629,7 +2654,7 @@ will be set to default_value . If an error is returned, out_value - will be set to FALSE.

    + will be set to FALSE.

    Parameters

    source_stream

    a GInputStream, or NULL.

    a GInputStream, or NULL.

    [nullable]

    key_ids

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

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

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

    out_imported

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

    [out][optional]

    cancellable

    a GCancellable

    a GCancellable

     

    error

    a GError

    a GError

     

    out_summary

    return location for raw summary data, or -NULL.

    [out][optional]

    out_signatures

    return location for raw summary -signature data, or NULL.

    [out][optional]

    cancellable

    a GCancellable

    a GCancellable

     

    error

    a GError

    a GError

     

    out_summary

    return location for raw summary data, or -NULL.

    [out][optional]

    out_signatures

    return location for raw summary -signature data, or NULL.

    [out][optional]

    cancellable

    a GCancellable

    a GCancellable

     

    error

    a GError

    a GError

     
    @@ -2675,7 +2700,7 @@

    Returns

    -

    TRUE on success, otherwise FALSE with error +

    TRUE on success, otherwise FALSE with error set

    Since: 2016.5

    @@ -2683,19 +2708,19 @@

    ostree_repo_get_remote_list_option ()

    -
    gboolean
    +
    gboolean
     ostree_repo_get_remote_list_option (OstreeRepo *self,
                                         const char *remote_name,
                                         const char *option_name,
                                         char ***out_value,
    -                                    GError **error);
    + GError **error);

    OSTree remotes are represented by keyfile groups, formatted like: [remote "remotename"]. This function returns a value named option_name underneath that group, and returns it as a zero terminated array of strings. If the option is not set, or if an error is returned, out_value will be set -to NULL.

    +to NULL.

    Parameters

    @@ -2724,7 +2749,7 @@ +g_strfreev().

    @@ -2737,7 +2762,7 @@

    Returns

    -

    TRUE on success, otherwise FALSE with error +

    TRUE on success, otherwise FALSE with error set

    Since: 2016.5

    @@ -2745,20 +2770,20 @@

    ostree_repo_get_remote_option ()

    -
    gboolean
    +
    gboolean
     ostree_repo_get_remote_option (OstreeRepo *self,
                                    const char *remote_name,
                                    const char *option_name,
                                    const char *default_value,
                                    char **out_value,
    -                               GError **error);
    + GError **error);

    OSTree remotes are represented by keyfile groups, formatted like: [remote "remotename"]. This function returns a value named option_name underneath that group, or default_value if the remote exists but not the option name. If an error is returned, out_value - will be set to NULL.

    + will be set to NULL.

    Parameters

    out_value

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

    [out][array zero-terminated=1]
    @@ -2804,7 +2829,7 @@

    Returns

    -

    TRUE on success, otherwise FALSE with error +

    TRUE on success, otherwise FALSE with error set

    Since: 2016.5

    @@ -2833,17 +2858,17 @@

    Returns

    -

    Parent repository, or NULL if none.

    +

    Parent repository, or NULL if none.

    [transfer none]


    ostree_repo_write_config ()

    -
    gboolean
    +
    gboolean
     ostree_repo_write_config (OstreeRepo *self,
    -                          GKeyFile *new_config,
    -                          GError **error);
    + GKeyFile *new_config, + GError **error);

    Save new_config in place of this repository's config file.

    @@ -2867,7 +2892,7 @@
    - + @@ -2877,10 +2902,10 @@

    ostree_repo_scan_hardlinks ()

    -
    gboolean
    +
    gboolean
     ostree_repo_scan_hardlinks (OstreeRepo *self,
    -                            GCancellable *cancellable,
    -                            GError **error);
    + GCancellable *cancellable, + GError **error);

    This function is deprecated in favor of using ostree_repo_devino_cache_new(), which allows a precise mapping to be built up between hardlink checkout files and their checksums between ostree_repo_checkout_at() and @@ -2926,11 +2951,11 @@


    ostree_repo_prepare_transaction ()

    -
    gboolean
    +
    gboolean
     ostree_repo_prepare_transaction (OstreeRepo *self,
    -                                 gboolean *out_transaction_resume,
    -                                 GCancellable *cancellable,
    -                                 GError **error);
    + gboolean *out_transaction_resume, + GCancellable *cancellable, + GError **error);

    Starts or resumes a transaction. In order to write to a repo, you need to start a transaction. You can complete the transaction with ostree_repo_commit_transaction(), or abort the transaction with @@ -2983,11 +3008,11 @@


    ostree_repo_commit_transaction ()

    -
    gboolean
    +
    gboolean
     ostree_repo_commit_transaction (OstreeRepo *self,
                                     OstreeRepoTransactionStats *out_stats,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + GCancellable *cancellable, + GError **error);

    Complete the transaction. Any refs set with ostree_repo_transaction_set_ref() or ostree_repo_transaction_set_refspec() will be written out.

    @@ -3033,10 +3058,10 @@

    ostree_repo_abort_transaction ()

    -
    gboolean
    +
    gboolean
     ostree_repo_abort_transaction (OstreeRepo *self,
    -                               GCancellable *cancellable,
    -                               GError **error);
    + GCancellable *cancellable, + GError **error);

    Abort the active transaction; any staged objects and ref changes will be discarded. You *must* invoke this if you have chosen not to invoke ostree_repo_commit_transaction(). Calling this function when not in a @@ -3118,13 +3143,13 @@ const char *ref, const char *checksum);

    If checksum - is not NULL, then record it as the target of ref named + is not NULL, then record it as the target of ref named ref ; if remote is provided, the ref will appear to originate from that remote.

    Otherwise, if checksum - is NULL, then record that the ref should + is NULL, then record that the ref should be deleted.

    The change will be written when the transaction is completed with ostree_repo_commit_transaction(); that function takes care of writing all of @@ -3175,13 +3200,13 @@


    ostree_repo_set_ref_immediate ()

    -
    gboolean
    +
    gboolean
     ostree_repo_set_ref_immediate (OstreeRepo *self,
                                    const char *remote,
                                    const char *ref,
                                    const char *checksum,
    -                               GCancellable *cancellable,
    -                               GError **error);
    + GCancellable *cancellable, + GError **error);

    This is like ostree_repo_transaction_set_ref(), except it may be invoked outside of a transaction. This is presently safe for the case where we're creating or overwriting an existing ref.

    @@ -3212,7 +3237,7 @@
    - + @@ -3232,13 +3257,13 @@

    ostree_repo_set_alias_ref_immediate ()

    -
    gboolean
    +
    gboolean
     ostree_repo_set_alias_ref_immediate (OstreeRepo *self,
                                          const char *remote,
                                          const char *ref,
                                          const char *target,
    -                                     GCancellable *cancellable,
    -                                     GError **error);
    + GCancellable *cancellable, + GError **error);

    Like ostree_repo_set_ref_immediate(), but creates an alias.

    Parameters

    @@ -3266,7 +3291,7 @@
    - + @@ -3287,12 +3312,12 @@

    ostree_repo_set_cache_dir ()

    -
    gboolean
    +
    gboolean
     ostree_repo_set_cache_dir (OstreeRepo *self,
                                int dfd,
                                const char *path,
    -                           GCancellable *cancellable,
    -                           GError **error);
    + GCancellable *cancellable, + GError **error);

    Set a custom location for the cache directory used for e.g. per-remote summary caches. Setting this manually is useful when doing operations on a system repo as a user because you don't have @@ -3324,12 +3349,12 @@

    - + - + @@ -3340,14 +3365,14 @@

    ostree_repo_sign_delta ()

    -
    gboolean
    +
    gboolean
     ostree_repo_sign_delta (OstreeRepo *self,
    -                        const gchar *from_commit,
    -                        const gchar *to_commit,
    -                        const gchar *key_id,
    -                        const gchar *homedir,
    -                        GCancellable *cancellable,
    -                        GError **error);
    + const gchar *from_commit, + const gchar *to_commit, + const gchar *key_id, + const gchar *homedir, + GCancellable *cancellable, + GError **error);

    This function is deprecated, sign the summary file instead. Add a GPG signature to a static delta.

    @@ -3401,17 +3426,17 @@

    ostree_repo_has_object ()

    -
    gboolean
    +
    gboolean
     ostree_repo_has_object (OstreeRepo *self,
                             OstreeObjectType objtype,
                             const char *checksum,
    -                        gboolean *out_have_object,
    -                        GCancellable *cancellable,
    -                        GError **error);
    + gboolean *out_have_object, + GCancellable *cancellable, + GError **error);

    Set out_have_object - to TRUE if self + to TRUE if self contains the given object; -FALSE otherwise.

    +FALSE otherwise.

    Parameters

    error

    a GError

    a GError

     

    checksum

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

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

    [allow-none]

    target

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

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

    [allow-none]

    cancellable

    a GCancellable

    a GCancellable

     

    error

    a GError

    a GError

     
    @@ -3438,7 +3463,7 @@ - + @@ -3456,17 +3481,17 @@

    Returns

    -

    FALSE if an unexpected error occurred, TRUE otherwise

    +

    FALSE if an unexpected error occurred, TRUE otherwise


    ostree_repo_mark_commit_partial ()

    -
    gboolean
    +
    gboolean
     ostree_repo_mark_commit_partial (OstreeRepo *self,
                                      const char *checksum,
    -                                 gboolean is_partial,
    -                                 GError **error);
    + gboolean is_partial, + GError **error);

    Commits in the "partial" state do not have all their child objects written. This occurs in various situations, such as during a pull, but also if a "subpath" pull is used, as well as "commit only" @@ -3510,13 +3535,13 @@


    ostree_repo_mark_commit_partial_reason ()

    -
    gboolean
    +
    gboolean
     ostree_repo_mark_commit_partial_reason
                                    (OstreeRepo *self,
                                     const char *checksum,
    -                                gboolean is_partial,
    +                                gboolean is_partial,
                                     OstreeRepoCommitState in_state,
    -                                GError **error);
    + GError **error);

    Allows the setting of a reason code for a partial commit. Presently it only supports setting reason bitmask to OSTREE_REPO_COMMIT_STATE_FSCK_PARTIAL, or @@ -3566,20 +3591,20 @@


    ostree_repo_write_metadata ()

    -
    gboolean
    +
    gboolean
     ostree_repo_write_metadata (OstreeRepo *self,
                                 OstreeObjectType objtype,
                                 const char *expected_checksum,
    -                            GVariant *object,
    -                            guchar **out_csum,
    -                            GCancellable *cancellable,
    -                            GError **error);
    + GVariant *object, + guchar **out_csum, + GCancellable *cancellable, + GError **error);

    Store the metadata object object . Return the checksum as out_csum .

    If expected_checksum - is not NULL, verify it against the + is not NULL, verify it against the computed checksum.

    Parameters

    @@ -3636,10 +3661,10 @@ ostree_repo_write_metadata_async (OstreeRepo *self, OstreeObjectType objtype, const char *expected_checksum, - GVariant *object, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); + GVariant *object, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data);

    Asynchronously store the metadata object variant . If provided, the checksum expected_checksum @@ -3696,11 +3721,11 @@


    ostree_repo_write_metadata_finish ()

    -
    gboolean
    +
    gboolean
     ostree_repo_write_metadata_finish (OstreeRepo *self,
    -                                   GAsyncResult *result,
    -                                   guchar **out_csum,
    -                                   GError **error);
    + GAsyncResult *result, + guchar **out_csum, + GError **error);

    Complete a call to ostree_repo_write_metadata_async().

    Parameters

    @@ -3738,14 +3763,14 @@

    ostree_repo_write_content ()

    -
    gboolean
    +
    gboolean
     ostree_repo_write_content (OstreeRepo *self,
                                const char *expected_checksum,
    -                           GInputStream *object_input,
    -                           guint64 length,
    -                           guchar **out_csum,
    -                           GCancellable *cancellable,
    -                           GError **error);
    + GInputStream *object_input, + guint64 length, + guchar **out_csum, + GCancellable *cancellable, + GError **error);

    Store the content object streamed as object_input , with total length length @@ -3804,13 +3829,13 @@


    ostree_repo_write_metadata_trusted ()

    -
    gboolean
    +
    gboolean
     ostree_repo_write_metadata_trusted (OstreeRepo *self,
                                         OstreeObjectType objtype,
                                         const char *checksum,
    -                                    GVariant *variant,
    -                                    GCancellable *cancellable,
    -                                    GError **error);
    + GVariant *variant, + GCancellable *cancellable, + GError **error);

    Store the metadata object variant ; the provided checksum is @@ -3861,15 +3886,15 @@


    ostree_repo_write_metadata_stream_trusted ()

    -
    gboolean
    +
    gboolean
     ostree_repo_write_metadata_stream_trusted
                                    (OstreeRepo *self,
                                     OstreeObjectType objtype,
                                     const char *checksum,
    -                                GInputStream *object_input,
    -                                guint64 length,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + GInputStream *object_input, + guint64 length, + GCancellable *cancellable, + GError **error);

    Store the metadata object variant ; the provided checksum is @@ -3925,13 +3950,13 @@


    ostree_repo_write_content_trusted ()

    -
    gboolean
    +
    gboolean
     ostree_repo_write_content_trusted (OstreeRepo *self,
                                        const char *checksum,
    -                                   GInputStream *object_input,
    -                                   guint64 length,
    -                                   GCancellable *cancellable,
    -                                   GError **error);
    + GInputStream *object_input, + guint64 length, + GCancellable *cancellable, + GError **error);

    Store the content object streamed as object_input , with total length length @@ -3990,11 +4015,11 @@

    void
     ostree_repo_write_content_async (OstreeRepo *self,
                                      const char *expected_checksum,
    -                                 GInputStream *object,
    -                                 guint64 length,
    -                                 GCancellable *cancellable,
    -                                 GAsyncReadyCallback callback,
    -                                 gpointer user_data);
    + GInputStream *object, + guint64 length, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data);

    Asynchronously store the content object object . If provided, the checksum expected_checksum @@ -4052,11 +4077,11 @@


    ostree_repo_write_content_finish ()

    -
    gboolean
    +
    gboolean
     ostree_repo_write_content_finish (OstreeRepo *self,
    -                                  GAsyncResult *result,
    -                                  guchar **out_csum,
    -                                  GError **error);
    + GAsyncResult *result, + guchar **out_csum, + GError **error);

    Completes an invocation of ostree_repo_write_content_async().

    Parameters

    @@ -4074,7 +4099,7 @@
    - + @@ -4084,7 +4109,7 @@ - + @@ -4094,12 +4119,12 @@

    ostree_repo_resolve_rev ()

    -
    gboolean
    +
    gboolean
     ostree_repo_resolve_rev (OstreeRepo *self,
                              const char *refspec,
    -                         gboolean allow_noent,
    +                         gboolean allow_noent,
                              char **out_rev,
    -                         GError **error);
    + GError **error);

    Look up the given refspec, returning the checksum it references in the parameter out_rev . Will fall back on remote directory if cannot @@ -4130,7 +4155,7 @@

    - @@ -4146,13 +4171,13 @@

    ostree_repo_resolve_rev_ext ()

    -
    gboolean
    +
    gboolean
     ostree_repo_resolve_rev_ext (OstreeRepo *self,
                                  const char *refspec,
    -                             gboolean allow_noent,
    +                             gboolean allow_noent,
                                  OstreeRepoResolveRevExtFlags flags,
                                  char **out_rev,
    -                             GError **error);
    + GError **error);

    Look up the given refspec, returning the checksum it references in the parameter out_rev . Differently from ostree_repo_resolve_rev(), @@ -4191,7 +4216,7 @@

    - @@ -4208,14 +4233,14 @@

    ostree_repo_list_refs ()

    -
    gboolean
    +
    gboolean
     ostree_repo_list_refs (OstreeRepo *self,
                            const char *refspec_prefix,
    -                       GHashTable **out_all_refs,
    -                       GCancellable *cancellable,
    -                       GError **error);
    + GHashTable **out_all_refs, + GCancellable *cancellable, + GError **error);

    If refspec_prefix - is NULL, list all local and remote refspecs, + is NULL, list all local and remote refspecs, with their current values in out_all_refs . Otherwise, only list refspecs which have refspec_prefix @@ -4223,7 +4248,7 @@

    out_all_refs will be returned as a mapping from refspecs (including the remote name) to checksums. If refspec_prefix - is non-NULL, it will be + is non-NULL, it will be removed as a prefix from the hash table keys.

    Parameters

    @@ -4266,15 +4291,15 @@

    ostree_repo_list_refs_ext ()

    -
    gboolean
    +
    gboolean
     ostree_repo_list_refs_ext (OstreeRepo *self,
                                const char *refspec_prefix,
    -                           GHashTable **out_all_refs,
    +                           GHashTable **out_all_refs,
                                OstreeRepoListRefsExtFlags flags,
    -                           GCancellable *cancellable,
    -                           GError **error);
    + GCancellable *cancellable, + GError **error);

    If refspec_prefix - is NULL, list all local and remote refspecs, + is NULL, list all local and remote refspecs, with their current values in out_all_refs . Otherwise, only list refspecs which have refspec_prefix @@ -4331,12 +4356,12 @@


    ostree_repo_remote_list_refs ()

    -
    gboolean
    +
    gboolean
     ostree_repo_remote_list_refs (OstreeRepo *self,
                                   const char *remote_name,
    -                              GHashTable **out_all_refs,
    -                              GCancellable *cancellable,
    -                              GError **error);
    + GHashTable **out_all_refs, + GCancellable *cancellable, + GError **error);

    Parameters

    out_have_object

    TRUE if repository contains object.

    TRUE if repository contains object.

    [out]

    result

    a GAsyncResult

    a GAsyncResult

     

    error

    a GError

    a GError

     

    out_rev

    A checksum,or NULL if allow_noent +

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

    [out][transfer full]

    out_rev

    A checksum,or NULL if allow_noent +

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

    [out][transfer full]
    @@ -4378,12 +4403,12 @@

    ostree_repo_load_variant ()

    -
    gboolean
    +
    gboolean
     ostree_repo_load_variant (OstreeRepo *self,
                               OstreeObjectType objtype,
                               const char *sha256,
    -                          GVariant **out_variant,
    -                          GError **error);
    + GVariant **out_variant, + GError **error);

    Load the metadata object sha256 of type objtype , storing the @@ -4430,12 +4455,12 @@


    ostree_repo_load_commit ()

    -
    gboolean
    +
    gboolean
     ostree_repo_load_commit (OstreeRepo *self,
                              const char *checksum,
    -                         GVariant **out_commit,
    +                         GVariant **out_commit,
                              OstreeRepoCommitState *out_state,
    -                         GError **error);
    + GError **error);

    A version of ostree_repo_load_variant() specialized to commits, capable of returning extended state information. Currently the only extended state is OSTREE_REPO_COMMIT_STATE_PARTIAL, which @@ -4481,18 +4506,18 @@


    ostree_repo_load_variant_if_exists ()

    -
    gboolean
    +
    gboolean
     ostree_repo_load_variant_if_exists (OstreeRepo *self,
                                         OstreeObjectType objtype,
                                         const char *sha256,
    -                                    GVariant **out_variant,
    -                                    GError **error);
    + GVariant **out_variant, + GError **error);

    Attempt to load the metadata object sha256 of type objtype if it exists, storing the result in out_variant . If it doesn't exist, -NULL is returned.

    +NULL is returned.

    Parameters

    @@ -4534,14 +4559,14 @@

    ostree_repo_load_file ()

    -
    gboolean
    +
    gboolean
     ostree_repo_load_file (OstreeRepo *self,
                            const char *checksum,
    -                       GInputStream **out_input,
    -                       GFileInfo **out_file_info,
    -                       GVariant **out_xattrs,
    -                       GCancellable *cancellable,
    -                       GError **error);
    + GInputStream **out_input, + GFileInfo **out_file_info, + GVariant **out_xattrs, + GCancellable *cancellable, + GError **error);

    Load content object, decomposing it into three parts: the actual content (for regular files), the metadata, and extended attributes.

    @@ -4595,14 +4620,14 @@

    ostree_repo_load_object_stream ()

    -
    gboolean
    +
    gboolean
     ostree_repo_load_object_stream (OstreeRepo *self,
                                     OstreeObjectType objtype,
                                     const char *checksum,
    -                                GInputStream **out_input,
    -                                guint64 *out_size,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + GInputStream **out_input, + guint64 *out_size, + GCancellable *cancellable, + GError **error);

    Load object as a stream; useful when copying objects between repositories.

    @@ -4657,13 +4682,13 @@

    ostree_repo_query_object_storage_size ()

    -
    gboolean
    +
    gboolean
     ostree_repo_query_object_storage_size (OstreeRepo *self,
                                            OstreeObjectType objtype,
                                            const char *sha256,
    -                                       guint64 *out_size,
    -                                       GCancellable *cancellable,
    -                                       GError **error);
    + guint64 *out_size, + GCancellable *cancellable, + GError **error);

    Return the size in bytes of object with checksum sha256 , after any compression has been applied.

    @@ -4713,13 +4738,13 @@

    ostree_repo_import_object_from ()

    -
    gboolean
    +
    gboolean
     ostree_repo_import_object_from (OstreeRepo *self,
                                     OstreeRepo *source,
                                     OstreeObjectType objtype,
                                     const char *checksum,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + GCancellable *cancellable, + GError **error);

    Copy object named by objtype and checksum into self @@ -4775,22 +4800,22 @@


    ostree_repo_import_object_from_with_trust ()

    -
    gboolean
    +
    gboolean
     ostree_repo_import_object_from_with_trust
                                    (OstreeRepo *self,
                                     OstreeRepo *source,
                                     OstreeObjectType objtype,
                                     const char *checksum,
    -                                gboolean trusted,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + gboolean trusted, + GCancellable *cancellable, + GError **error);

    Copy object named by objtype and checksum into self from the source repository source . If trusted - is TRUE and both + is TRUE and both repositories are of the same type and on the same filesystem, this will simply be a fast Unix hard link operation.

    Otherwise, a copy will be performed.

    @@ -4825,7 +4850,7 @@
    - + @@ -4846,14 +4871,14 @@

    ostree_repo_import_archive_to_mtree ()

    -
    gboolean
    +
    gboolean
     ostree_repo_import_archive_to_mtree (OstreeRepo *self,
                                          OstreeRepoImportArchiveOptions *opts,
                                          void *archive,
                                          OstreeMutableTree *mtree,
                                          OstreeRepoCommitModifier *modifier,
    -                                     GCancellable *cancellable,
    -                                     GError **error);
    + GCancellable *cancellable, + GError **error);

    Import an archive file archive into the repository, and write its file structure to mtree @@ -4910,13 +4935,13 @@


    ostree_repo_export_tree_to_archive ()

    -
    gboolean
    +
    gboolean
     ostree_repo_export_tree_to_archive (OstreeRepo *self,
                                         OstreeRepoExportArchiveOptions *opts,
                                         OstreeRepoFile *root,
                                         void *archive,
    -                                    GCancellable *cancellable,
    -                                    GError **error);
    + GCancellable *cancellable, + GError **error);

    Import an archive file archive into the repository, and write its file structure to mtree @@ -4968,16 +4993,16 @@


    ostree_repo_delete_object ()

    -
    gboolean
    +
    gboolean
     ostree_repo_delete_object (OstreeRepo *self,
                                OstreeObjectType objtype,
                                const char *sha256,
    -                           GCancellable *cancellable,
    -                           GError **error);
    + GCancellable *cancellable, + GError **error);

    Remove the object of type objtype with checksum sha256 -from the repository. An error of type G_IO_ERROR_NOT_FOUND +from the repository. An error of type G_IO_ERROR_NOT_FOUND is thrown if the object does not exist.

    Parameters

    @@ -5020,12 +5045,12 @@

    ostree_repo_fsck_object ()

    -
    gboolean
    +
    gboolean
     ostree_repo_fsck_object (OstreeRepo *self,
                              OstreeObjectType objtype,
                              const char *sha256,
    -                         GCancellable *cancellable,
    -                         GError **error);
    + GCancellable *cancellable, + GError **error);

    Verify consistency of the object; this performs checks only relevant to the immediate object itself, such as checksumming. This API call will not itself traverse metadata objects for example.

    @@ -5074,8 +5099,8 @@
    OstreeRepoCommitFilterResult
     (*OstreeRepoCommitFilter) (OstreeRepo *repo,
                                const char *path,
    -                           GFileInfo *file_info,
    -                           gpointer user_data);
    + GFileInfo *file_info, + gpointer user_data);

    Parameters

    trusted

    If TRUE, assume the source repo is valid and trusted

    If TRUE, assume the source repo is valid and trusted

     
    @@ -5119,8 +5144,8 @@
    OstreeRepoCommitModifier *
     ostree_repo_commit_modifier_new (OstreeRepoCommitModifierFlags flags,
                                      OstreeRepoCommitFilter commit_filter,
    -                                 gpointer user_data,
    -                                 GDestroyNotify destroy_notify);
    + gpointer user_data, + GDestroyNotify destroy_notify);

    Parameters

    @@ -5147,7 +5172,7 @@ - + @@ -5162,12 +5187,12 @@

    OstreeRepoCommitModifierXattrCallback ()

    -
    GVariant *
    +
    GVariant *
     (*OstreeRepoCommitModifierXattrCallback)
                                    (OstreeRepo *repo,
                                     const char *path,
    -                                GFileInfo *file_info,
    -                                gpointer user_data);
    + GFileInfo *file_info, + gpointer user_data);

    @@ -5176,8 +5201,8 @@ ostree_repo_commit_modifier_set_xattr_callback (OstreeRepoCommitModifier *modifier, OstreeRepoCommitModifierXattrCallback callback, - GDestroyNotify destroy, - gpointer user_data); + GDestroyNotify destroy, + gpointer user_data);

    If set, this function should return extended attributes to use for the given path. This is useful for things like ACLs and SELinux, where a build system can label the files as it's committing to the @@ -5224,7 +5249,7 @@ (OstreeRepoCommitModifier *modifier, OstreeSePolicy *sepolicy);

    If policy - is non-NULL, use it to look up labels to use for + is non-NULL, use it to look up labels to use for "security.selinux" extended attributes.

    Note that any policy specified this way operates in addition to any extended attributes provided via @@ -5257,13 +5282,13 @@


    ostree_repo_commit_modifier_set_sepolicy_from_commit ()

    -
    gboolean
    +
    gboolean
     ostree_repo_commit_modifier_set_sepolicy_from_commit
                                    (OstreeRepoCommitModifier *modifier,
                                     OstreeRepo *repo,
                                     const char *rev,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + GCancellable *cancellable, + GError **error);

    In many cases, one wants to create a "derived" commit from base commit. SELinux policy labels are part of that base commit. This API allows one to easily set up SELinux labeling from a base commit.

    @@ -5382,19 +5407,19 @@

    ostree_repo_devino_cache_get_type ()

    -
    GType
    +
    GType
     ostree_repo_devino_cache_get_type (void);

    ostree_repo_write_directory_to_mtree ()

    -
    gboolean
    +
    gboolean
     ostree_repo_write_directory_to_mtree (OstreeRepo *self,
    -                                      GFile *dir,
    +                                      GFile *dir,
                                           OstreeMutableTree *mtree,
                                           OstreeRepoCommitModifier *modifier,
    -                                      GCancellable *cancellable,
    -                                      GError **error);
    + GCancellable *cancellable, + GError **error);

    Store objects for dir and all children into the repository self , @@ -5446,14 +5471,14 @@


    ostree_repo_write_dfd_to_mtree ()

    -
    gboolean
    +
    gboolean
     ostree_repo_write_dfd_to_mtree (OstreeRepo *self,
                                     int dfd,
                                     const char *path,
                                     OstreeMutableTree *mtree,
                                     OstreeRepoCommitModifier *modifier,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + GCancellable *cancellable, + GError **error);

    Store as objects all contents of the directory referred to by dfd and path @@ -5512,14 +5537,14 @@


    ostree_repo_write_archive_to_mtree ()

    -
    gboolean
    +
    gboolean
     ostree_repo_write_archive_to_mtree (OstreeRepo *self,
    -                                    GFile *archive,
    +                                    GFile *archive,
                                         OstreeMutableTree *mtree,
                                         OstreeRepoCommitModifier *modifier,
    -                                    gboolean autocreate_parents,
    -                                    GCancellable *cancellable,
    -                                    GError **error);
    + gboolean autocreate_parents, + GCancellable *cancellable, + GError **error);

    Import an archive file archive into the repository, and write its file structure to mtree @@ -5575,15 +5600,15 @@


    ostree_repo_write_archive_to_mtree_from_fd ()

    -
    gboolean
    +
    gboolean
     ostree_repo_write_archive_to_mtree_from_fd
                                    (OstreeRepo *self,
                                     int fd,
                                     OstreeMutableTree *mtree,
                                     OstreeRepoCommitModifier *modifier,
    -                                gboolean autocreate_parents,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + gboolean autocreate_parents, + GCancellable *cancellable, + GError **error);

    Read an archive from fd and import it into the repository, writing its file structure to mtree @@ -5639,12 +5664,12 @@


    ostree_repo_write_mtree ()

    -
    gboolean
    +
    gboolean
     ostree_repo_write_mtree (OstreeRepo *self,
                              OstreeMutableTree *mtree,
    -                         GFile **out_file,
    -                         GCancellable *cancellable,
    -                         GError **error);
    + GFile **out_file, + GCancellable *cancellable, + GError **error);

    Write all metadata objects for mtree to repo; the resulting out_file @@ -5693,16 +5718,16 @@


    ostree_repo_write_commit ()

    -
    gboolean
    +
    gboolean
     ostree_repo_write_commit (OstreeRepo *self,
                               const char *parent,
                               const char *subject,
                               const char *body,
    -                          GVariant *metadata,
    +                          GVariant *metadata,
                               OstreeRepoFile *root,
                               char **out_commit,
    -                          GCancellable *cancellable,
    -                          GError **error);
    + GCancellable *cancellable, + GError **error);

    Write a commit metadata object, referencing root_contents_checksum and root_metadata_checksum @@ -5723,7 +5748,7 @@

    - + @@ -5738,7 +5763,7 @@ - + @@ -5768,17 +5793,17 @@

    ostree_repo_write_commit_with_time ()

    -
    gboolean
    +
    gboolean
     ostree_repo_write_commit_with_time (OstreeRepo *self,
                                         const char *parent,
                                         const char *subject,
                                         const char *body,
    -                                    GVariant *metadata,
    +                                    GVariant *metadata,
                                         OstreeRepoFile *root,
    -                                    guint64 time,
    +                                    guint64 time,
                                         char **out_commit,
    -                                    GCancellable *cancellable,
    -                                    GError **error);
    + GCancellable *cancellable, + GError **error);

    Write a commit metadata object, referencing root_contents_checksum and root_metadata_checksum @@ -5799,7 +5824,7 @@

    - + @@ -5814,7 +5839,7 @@ - + @@ -5849,17 +5874,17 @@

    ostree_repo_read_commit_detached_metadata ()

    -
    gboolean
    +
    gboolean
     ostree_repo_read_commit_detached_metadata
                                    (OstreeRepo *self,
                                     const char *checksum,
    -                                GVariant **out_metadata,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + GVariant **out_metadata, + GCancellable *cancellable, + GError **error);

    OSTree commits can have arbitrary metadata associated; this function retrieves them. If none exists, out_metadata will be set -to NULL.

    +to NULL.

    Parameters

    destroy_notify

    A GDestroyNotify

    A GDestroyNotify

     

    parent

    ASCII SHA256 checksum for parent, or NULL for none.

    ASCII SHA256 checksum for parent, or NULL for none.

    [allow-none]

    metadata

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

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

    [allow-none]

    parent

    ASCII SHA256 checksum for parent, or NULL for none.

    ASCII SHA256 checksum for parent, or NULL for none.

    [allow-none]

    metadata

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

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

    [allow-none]
    @@ -5881,7 +5906,7 @@ - + @@ -5901,18 +5926,18 @@

    ostree_repo_write_commit_detached_metadata ()

    -
    gboolean
    +
    gboolean
     ostree_repo_write_commit_detached_metadata
                                    (OstreeRepo *self,
                                     const char *checksum,
    -                                GVariant *metadata,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + GVariant *metadata, + GCancellable *cancellable, + GError **error);

    Replace any existing metadata associated with commit referred to by checksum with metadata . If metadata - is NULL, then existing + is NULL, then existing data will be deleted.

    Parameters

    @@ -5935,7 +5960,7 @@
    - + @@ -5994,15 +6019,15 @@

    ostree_repo_checkout_tree ()

    -
    gboolean
    +
    gboolean
     ostree_repo_checkout_tree (OstreeRepo *self,
                                OstreeRepoCheckoutMode mode,
                                OstreeRepoCheckoutOverwriteMode overwrite_mode,
    -                           GFile *destination,
    +                           GFile *destination,
                                OstreeRepoFile *source,
    -                           GFileInfo *source_info,
    -                           GCancellable *cancellable,
    -                           GError **error);
    + GFileInfo *source_info, + GCancellable *cancellable, + GError **error);

    Check out source into destination , which must live on the @@ -6068,14 +6093,14 @@


    ostree_repo_checkout_tree_at ()

    -
    gboolean
    +
    gboolean
     ostree_repo_checkout_tree_at (OstreeRepo *self,
                                   OstreeRepoCheckoutOptions *options,
                                   int destination_dfd,
                                   const char *destination_path,
                                   const char *commit,
    -                              GCancellable *cancellable,
    -                              GError **error);
    + GCancellable *cancellable, + GError **error);

    ostree_repo_checkout_tree_at is deprecated and should not be used in newly-written code.

    Similar to ostree_repo_checkout_tree(), but uses directory-relative paths for the destination, uses a new OstreeRepoCheckoutAtOptions, @@ -6137,14 +6162,14 @@


    ostree_repo_checkout_at ()

    -
    gboolean
    +
    gboolean
     ostree_repo_checkout_at (OstreeRepo *self,
                              OstreeRepoCheckoutAtOptions *options,
                              int destination_dfd,
                              const char *destination_path,
                              const char *commit,
    -                         GCancellable *cancellable,
    -                         GError **error);
    + GCancellable *cancellable, + GError **error);

    Similar to ostree_repo_checkout_tree(), but uses directory-relative paths for the destination, uses a new OstreeRepoCheckoutAtOptions, and takes a commit checksum and optional subpath pair, rather than @@ -6206,10 +6231,10 @@


    ostree_repo_checkout_gc ()

    -
    gboolean
    +
    gboolean
     ostree_repo_checkout_gc (OstreeRepo *self,
    -                         GCancellable *cancellable,
    -                         GError **error);
    + GCancellable *cancellable, + GError **error);

    Call this after finishing a succession of checkout operations; it will delete any currently-unused uncompressed objects from the cache.

    @@ -6244,13 +6269,13 @@

    ostree_repo_read_commit ()

    -
    gboolean
    +
    gboolean
     ostree_repo_read_commit (OstreeRepo *self,
                              const char *ref,
    -                         GFile **out_root,
    +                         GFile **out_root,
                              char **out_commit,
    -                         GCancellable *cancellable,
    -                         GError **error);
    + GCancellable *cancellable, + GError **error);

    Load the content for rev into out_root .

    @@ -6300,18 +6325,18 @@

    ostree_repo_list_objects ()

    -
    gboolean
    +
    gboolean
     ostree_repo_list_objects (OstreeRepo *self,
                               OstreeRepoListObjectsFlags flags,
    -                          GHashTable **out_objects,
    -                          GCancellable *cancellable,
    -                          GError **error);
    + GHashTable **out_objects, + GCancellable *cancellable, + GError **error);

    This function synchronously enumerates all objects in the repository, returning data in out_objects . out_objects maps from keys returned by ostree_object_name_serialize() -to GVariant values of type OSTREE_REPO_LIST_OBJECTS_VARIANT_TYPE.

    +to GVariant values of type OSTREE_REPO_LIST_OBJECTS_VARIANT_TYPE.

    Parameters

    out_metadata

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

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

    [out][transfer full]

    metadata

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

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

    [allow-none]
    @@ -6351,20 +6376,20 @@

    Returns

    -

    TRUE on success, FALSE on error, and error +

    TRUE on success, FALSE on error, and error will be set


    ostree_repo_list_commit_objects_starting_with ()

    -
    gboolean
    +
    gboolean
     ostree_repo_list_commit_objects_starting_with
                                    (OstreeRepo *self,
                                     const char *start,
    -                                GHashTable **out_commits,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + GHashTable **out_commits, + GCancellable *cancellable, + GError **error);

    This function synchronously enumerates all commit objects starting with start , returning data in out_commits @@ -6408,18 +6433,18 @@

    Returns

    -

    TRUE on success, FALSE on error, and error +

    TRUE on success, FALSE on error, and error will be set


    ostree_repo_list_static_delta_names ()

    -
    gboolean
    +
    gboolean
     ostree_repo_list_static_delta_names (OstreeRepo *self,
    -                                     GPtrArray **out_deltas,
    -                                     GCancellable *cancellable,
    -                                     GError **error);
    + GPtrArray **out_deltas, + GCancellable *cancellable, + GError **error);

    This function synchronously enumerates all static deltas in the repository, returning its result in out_deltas .

    @@ -6458,18 +6483,118 @@

    +

    ostree_repo_list_static_delta_indexes ()

    +
    gboolean
    +ostree_repo_list_static_delta_indexes (OstreeRepo *self,
    +                                       GPtrArray **out_indexes,
    +                                       GCancellable *cancellable,
    +                                       GError **error);
    +

    This function synchronously enumerates all static delta indexes in the +repository, returning its result in out_indexes +.

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + +

    self

    Repo

     

    out_indexes

    String name of delta indexes (checksum).

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

    cancellable

    Cancellable

     

    error

    Error

     
    +
    +

    Since: 2020.7

    +
    +
    +
    +

    ostree_repo_static_delta_reindex ()

    +
    gboolean
    +ostree_repo_static_delta_reindex (OstreeRepo *repo,
    +                                  OstreeStaticDeltaIndexFlags flags,
    +                                  const char *opt_to_commit,
    +                                  GCancellable *cancellable,
    +                                  GError **error);
    +

    The delta index for a particular commit lists all the existing deltas that can be used +when downloading that commit. This operation regenerates these indexes, either for +a particular commit (if opt_to_commit + is non-NULL), or for all commits that +are reachable by an existing delta (if opt_to_commit + is NULL).

    +

    This is normally called automatically when the summary is updated in ostree_repo_regenerate_summary().

    +

    Locking: shared

    +
    +

    Parameters

    +
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    repo

    Repo

     

    flags

    Flags affecting the indexing operation

     

    opt_to_commit

    ASCII SHA256 checksum of target commit, or NULL to index all targets

     

    cancellable

    Cancellable

     

    error

    Error

     
    +
    +
    +
    +

    ostree_repo_static_delta_generate ()

    -
    gboolean
    +
    gboolean
     ostree_repo_static_delta_generate (OstreeRepo *self,
                                        OstreeStaticDeltaGenerateOpt opt,
                                        const char *from,
                                        const char *to,
    -                                   GVariant *metadata,
    -                                   GVariant *params,
    -                                   GCancellable *cancellable,
    -                                   GError **error);
    + GVariant *metadata, + GVariant *params, + GCancellable *cancellable, + GError **error);

    Generate a lookaside "static delta" from from - (NULL means + (NULL means from-empty) which can generate the objects in to . This delta is an optimization over fetching individual objects, and can be @@ -6512,8 +6637,8 @@

    from

    ASCII SHA256 checksum of origin, or NULL

     

    ASCII SHA256 checksum of origin, or NULL.

    [nullable]

    to

    metadata

    Optional metadata.

    [allow-none][nullable]

    params

    Parameters, see below.

    [allow-none][nullable]

    cancellable

    skip_validation

    If TRUE, assume data integrity

    If TRUE, assume data integrity

     

    skip_validation

    If TRUE, assume data integrity

    If TRUE, assume data integrity

     

    out_success_message

    success message

     

    success message.

    [out][nullable][optional]

    error

    commit

    ASCII SHA256 checksum for commit, or NULL for each +

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

    [allow-none]

    refs_to_fetch

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

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

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

    refs_to_fetch

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

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

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

    homedir

    GPG home directory, or NULL.

    GPG home directory, or NULL.

    [allow-none]

    cancellable

    A GCancellable

    A GCancellable

     

    error

    a GError

    a GError

     

    cancellable

    A GCancellable

    A GCancellable

     

    error

    a GError

    a GError

     

    homedir

    GPG home directory, or NULL.

    GPG home directory, or NULL.

    [allow-none]

    cancellable

    A GCancellable

    A GCancellable

     

    error

    a GError

    a GError

     
    +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    self

    Self

     

    data

    Data as a GBytes

     

    old_signatures

    Existing signatures to append to (or NULL)

     

    key_id

    NULL-terminated array of GPG keys.

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

    homedir

    GPG home directory, or NULL.

    [allow-none]

    out_signatures

    in case of success will contain signature.

    [out]

    cancellable

    A GCancellable

     

    error

    a GError

     
    +
    +
    +

    Returns

    +

    TRUE +if data +has been signed successfully, +FALSE +in case of error (error +will contain the reason).

    +
    +

    Since: 2020.8

    +
    +
    +

    ostree_repo_gpg_verify_data ()

    OstreeGpgVerifyResult *
     ostree_repo_gpg_verify_data (OstreeRepo *self,
    -                             const gchar *remote_name,
    -                             GBytes *data,
    -                             GBytes *signatures,
    -                             GFile *keyringdir,
    -                             GFile *extra_keyring,
    -                             GCancellable *cancellable,
    -                             GError **error);
    + const gchar *remote_name, + GBytes *data, + GBytes *signatures, + GFile *keyringdir, + GFile *extra_keyring, + GCancellable *cancellable, + GError **error);

    Verify signatures for data using GPG keys in the keyring for remote_name , and return an OstreeGpgVerifyResult.

    The remote_name - parameter can be NULL. In that case it will do + parameter can be NULL. In that case it will do the verifications using GPG keys in the keyrings of all remotes.

    Parameters

    @@ -7907,12 +8113,12 @@

    data

    Data as a GBytes

    Data as a GBytes

     

    signatures

    Signatures as a GBytes

    Signatures as a GBytes

     

    summary

    Summary data as a GBytes

    Summary data as a GBytes

     

    signatures

    Summary signatures as a GBytes

    Summary signatures as a GBytes

     

    additional_metadata

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

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

    [allow-none]

    guint metadata_objects_total;

    guint metadata_objects_total;

    The total number of metadata objects in the repository after this transaction has completed.

     

    guint metadata_objects_written;

    guint metadata_objects_written;

    The number of metadata objects that were written to the repository in this transaction.

     

    guint content_objects_total;

    guint content_objects_total;

    The total number of content objects in the repository after this transaction has completed.

     

    guint content_objects_written;

    guint content_objects_written;

    The number of content objects that were written to the repository in this transaction.

     

    guint64 content_bytes_written;

    guint64 content_bytes_written;

    The amount of data added to the repository, in bytes, counting only content objects.

     

    guint devino_cache_hits;

    guint devino_cache_hits;

       

    guint padding1;

    guint padding1;

    reserved

     

    guint64 padding2;

    guint64 padding2;

    reserved

     

    guint64 padding3;

    guint64 padding3;

    reserved

     

    guint64 padding4;

    guint64 padding4;

    reserved

     
    -GVariant * +GVariant * ostree_async_progress_get_variant () @@ -89,7 +89,7 @@
    -guint +guint ostree_async_progress_get_uint () @@ -97,7 +97,7 @@
    -guint64 +guint64 ostree_async_progress_get_uint64 () @@ -179,7 +179,7 @@ notification occurs in the thread-default context of the calling operation.

    The ostree_async_progress_get_status() and ostree_async_progress_set_status() -methods get and set a well-known status key of type G_VARIANT_TYPE_STRING. +methods get and set a well-known status key of type G_VARIANT_TYPE_STRING. This key may be accessed using the other OstreeAsyncProgress methods, but it must always have the correct type.

    @@ -200,7 +200,7 @@

    ostree_async_progress_new_and_connect ()

    OstreeAsyncProgress *
     ostree_async_progress_new_and_connect (void (*changed) (OstreeAsyncProgress *self, gpointer user_data),
    -                                       gpointer user_data);
    + gpointer user_data);
    @@ -212,7 +212,7 @@ to dest , without invoking the callback. -This is used for proxying progress objects across different GMainContexts.

    +This is used for proxying progress objects across different GMainContexts.

    Parameters

    @@ -243,7 +243,7 @@
    char *
     ostree_async_progress_get_status (OstreeAsyncProgress *self);

    Get the human-readable status string from the OstreeAsyncProgress. This -operation is thread-safe. The retuned value may be NULL if no status is +operation is thread-safe. The retuned value may be NULL if no status is set.

    This is a convenience function to get the well-known status key.

    @@ -263,7 +263,7 @@

    Returns

    -

    the current status, or NULL if none is set.

    +

    the current status, or NULL if none is set.

    [transfer full][nullable]

    Since: 2017.6

    @@ -276,9 +276,9 @@ ...);

    Get the values corresponding to zero or more keys from the OstreeAsyncProgress. Each key is specified in @... as the key name, followed -by a GVariant format string, followed by the necessary arguments for that -format string, just as for g_variant_get(). After those arguments is the -next key name. The varargs list must be NULL-terminated.

    +by a GVariant format string, followed by the necessary arguments for that +format string, just as for g_variant_get(). After those arguments is the +next key name. The varargs list must be NULL-terminated.

    Each format string must make deep copies of its value, as the values stored in the OstreeAsyncProgress may be freed from another thread after this function returns.

    @@ -331,7 +331,7 @@ - + @@ -342,10 +342,10 @@

    ostree_async_progress_get_variant ()

    -
    GVariant *
    +
    GVariant *
     ostree_async_progress_get_variant (OstreeAsyncProgress *self,
                                        const char *key);
    -

    Look up a key in the OstreeAsyncProgress and return the GVariant associated +

    Look up a key in the OstreeAsyncProgress and return the GVariant associated with it. The lookup is thread-safe.

    Parameters

    @@ -372,7 +372,7 @@

    Returns

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

    [transfer full][nullable]

    @@ -381,14 +381,14 @@

    ostree_async_progress_get_uint ()

    -
    guint
    +
    guint
     ostree_async_progress_get_uint (OstreeAsyncProgress *self,
                                     const char *key);

    ostree_async_progress_get_uint64 ()

    -
    guint64
    +
    guint64
     ostree_async_progress_get_uint64 (OstreeAsyncProgress *self,
                                       const char *key);
    @@ -399,7 +399,7 @@ ostree_async_progress_set_status (OstreeAsyncProgress *self, const char *status);

    Set the human-readable status string for the OstreeAsyncProgress. This -operation is thread-safe. NULL may be passed to clear the status.

    +operation is thread-safe. NULL may be passed to clear the status.

    This is a convenience function to set the well-known status key.

    Parameters

    @@ -417,7 +417,7 @@
    - + @@ -432,11 +432,11 @@ ostree_async_progress_set (OstreeAsyncProgress *self, ...);

    Set the values for zero or more keys in the OstreeAsyncProgress. Each key is -specified in @... as the key name, followed by a GVariant format string, +specified in @... as the key name, followed by a GVariant format string, followed by the necessary arguments for that format string, just as for -g_variant_new(). After those arguments is the next key name. The varargs list -must be NULL-terminated.

    -

    g_variant_ref_sink() will be called as appropriate on the GVariant +g_variant_new(). After those arguments is the next key name. The varargs list +must be NULL-terminated.

    +

    g_variant_ref_sink() will be called as appropriate on the GVariant parameters, so they may be floating.

    This operation is thread-safe, and all the keys are set atomically.

    @@ -483,7 +483,7 @@
    - + @@ -497,13 +497,13 @@
    void
     ostree_async_progress_set_variant (OstreeAsyncProgress *self,
                                        const char *key,
    -                                   GVariant *value);
    + GVariant *value);

    Assign a new value to the given key , replacing any existing value. The operation is thread-safe. value may be a floating reference; -g_variant_ref_sink() will be called on it.

    +g_variant_ref_sink() will be called on it.

    Any watchers of the OstreeAsyncProgress will be notified of the change if value differs from the existing value for key @@ -544,7 +544,7 @@

    void
     ostree_async_progress_set_uint (OstreeAsyncProgress *self,
                                     const char *key,
    -                                guint value);
    + guint value);
    @@ -552,7 +552,7 @@
    void
     ostree_async_progress_set_uint64 (OstreeAsyncProgress *self,
                                       const char *key,
    -                                  guint64 value);
    + guint64 value);

    @@ -589,6 +589,6 @@
    +
    Generated by GTK-Doc V1.33.0 \ No newline at end of file diff -Nru ostree-2020.7/apidoc/html/ostree-Root-partition-mount-point.html ostree-2020.8/apidoc/html/ostree-Root-partition-mount-point.html --- ostree-2020.7/apidoc/html/ostree-Root-partition-mount-point.html 2020-10-14 00:06:16.000000000 +0000 +++ ostree-2020.8/apidoc/html/ostree-Root-partition-mount-point.html 2020-11-17 15:38:22.000000000 +0000 @@ -8,7 +8,7 @@ - + @@ -57,7 +57,7 @@ - @@ -487,9 +487,9 @@

    ostree_sysroot_initialize ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_initialize (OstreeSysroot *self,
    -                           GError **error);
    + GError **error);

    Subset of ostree_sysroot_load(); performs basic initialization. Notably, one can invoke ostree_sysroot_get_fd() after calling this function.

    It is not necessary to call this function if ostree_sysroot_load() is @@ -514,21 +514,36 @@


    ostree_sysroot_get_path ()

    -
    GFile *
    +
    GFile *
     ostree_sysroot_get_path (OstreeSysroot *self);
    +

    Parameters

    +

    ...

    key name, format string, GVariant return locations, …, followed by NULL

    key name, format string, GVariant return locations, …, followed by NULL

     

    status

    new status string, or NULL to clear the status.

    new status string, or NULL to clear the status.

    [nullable]

    ...

    key name, format string, GVariant parameters, …, followed by NULL

    key name, format string, GVariant parameters, …, followed by NULL

     
    -gboolean +gboolean ostree_sysroot_initialize () @@ -65,7 +65,7 @@
    -GFile * +GFile * ostree_sysroot_get_path () @@ -73,7 +73,7 @@
    -gboolean +gboolean ostree_sysroot_load () @@ -81,7 +81,7 @@
    -gboolean +gboolean ostree_sysroot_load_if_changed () @@ -89,7 +89,7 @@
    -gboolean +gboolean ostree_sysroot_lock () @@ -97,7 +97,7 @@
    -gboolean +gboolean ostree_sysroot_try_lock () @@ -113,7 +113,7 @@
    -gboolean +gboolean ostree_sysroot_lock_finish () @@ -145,7 +145,7 @@
    -gboolean +gboolean ostree_sysroot_is_booted () @@ -161,7 +161,7 @@
    -gboolean +gboolean ostree_sysroot_ensure_initialized () @@ -185,7 +185,7 @@
    -GPtrArray * +GPtrArray * ostree_sysroot_get_deployments () @@ -201,7 +201,7 @@
    -GFile * +GFile * ostree_sysroot_get_deployment_directory () @@ -217,7 +217,7 @@
    -GFile * +GFile * ostree_sysroot_get_deployment_origin_path () @@ -225,7 +225,7 @@
    -gboolean +gboolean ostree_sysroot_cleanup () @@ -233,7 +233,7 @@
    -gboolean +gboolean ostree_sysroot_prepare_cleanup () @@ -241,7 +241,7 @@
    -gboolean +gboolean ostree_sysroot_cleanup_prune_repo () @@ -257,7 +257,7 @@
    -gboolean +gboolean ostree_sysroot_get_repo () @@ -273,7 +273,7 @@
    -gboolean +gboolean ostree_sysroot_init_osname () @@ -281,7 +281,7 @@
    -gboolean +gboolean ostree_sysroot_deployment_set_kargs () @@ -289,7 +289,7 @@
    -gboolean +gboolean ostree_sysroot_deployment_set_mutable () @@ -297,7 +297,7 @@
    -gboolean +gboolean ostree_sysroot_deployment_unlock () @@ -305,7 +305,7 @@
    -gboolean +gboolean ostree_sysroot_deployment_set_pinned () @@ -313,7 +313,7 @@
    -gboolean +gboolean ostree_sysroot_write_deployments () @@ -321,7 +321,7 @@
    -gboolean +gboolean ostree_sysroot_write_deployments_with_options () @@ -329,7 +329,7 @@
    -gboolean +gboolean ostree_sysroot_write_origin_file () @@ -337,7 +337,7 @@
    -gboolean +gboolean ostree_sysroot_stage_tree () @@ -345,7 +345,7 @@
    -gboolean +gboolean ostree_sysroot_stage_tree_with_options () @@ -353,7 +353,7 @@
    -gboolean +gboolean ostree_sysroot_stage_overlay_initrd () @@ -361,7 +361,7 @@
    -gboolean +gboolean ostree_sysroot_deploy_tree () @@ -369,7 +369,7 @@
    -gboolean +gboolean ostree_sysroot_deploy_tree_with_options () @@ -393,7 +393,7 @@
    -GKeyFile * +GKeyFile * ostree_sysroot_origin_new_from_refspec () @@ -401,7 +401,7 @@
    -gboolean +gboolean ostree_sysroot_simple_write_deployment () @@ -444,10 +444,10 @@

    ostree_sysroot_new ()

    OstreeSysroot *
    -ostree_sysroot_new (GFile *path);
    +ostree_sysroot_new (GFile *path);

    Create a new OstreeSysroot object for the sysroot at path . If path - is NULL, + is NULL, the current visible root file system is used, equivalent to ostree_sysroot_new_default().

    @@ -460,7 +460,7 @@

    path

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

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

    [allow-none]
    +++++ + + + + + +

    self

    Sysroot

     
    +
    +

    Returns

    Path to rootfs.

    -

    [transfer none]

    +

    [transfer none][not nullable]


    ostree_sysroot_load ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_load (OstreeSysroot *self,
    -                     GCancellable *cancellable,
    -                     GError **error);
    + GCancellable *cancellable, + GError **error);

    Load deployment list, bootversion, and subbootversion from the rootfs self .

    @@ -563,11 +578,11 @@

    ostree_sysroot_load_if_changed ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_load_if_changed (OstreeSysroot *self,
    -                                gboolean *out_changed,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + gboolean *out_changed, + GCancellable *cancellable, + GError **error);

    Parameters

    @@ -605,9 +620,9 @@

    ostree_sysroot_lock ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_lock (OstreeSysroot *self,
    -                     GError **error);
    + GError **error);

    Acquire an exclusive multi-process write lock for self . This call blocks until the lock has been acquired. The lock is not @@ -641,15 +656,15 @@


    ostree_sysroot_try_lock ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_try_lock (OstreeSysroot *self,
    -                         gboolean *out_acquired,
    -                         GError **error);
    + gboolean *out_acquired, + GError **error);

    Try to acquire an exclusive multi-process write lock for self . If another process holds the lock, this function will return immediately, setting out_acquired - to FALSE, and returning TRUE + to FALSE, and returning TRUE (and no error).

    Release the lock with ostree_sysroot_unlock(). The lock will also be released if self @@ -687,9 +702,9 @@

    ostree_sysroot_lock_async ()

    void
     ostree_sysroot_lock_async (OstreeSysroot *self,
    -                           GCancellable *cancellable,
    -                           GAsyncReadyCallback callback,
    -                           gpointer user_data);
    + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data);

    An asynchronous version of ostree_sysroot_lock().

    Parameters

    @@ -727,10 +742,10 @@

    ostree_sysroot_lock_finish ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_lock_finish (OstreeSysroot *self,
    -                            GAsyncResult *result,
    -                            GError **error);
    + GAsyncResult *result, + GError **error);

    Call when ostree_sysroot_lock_async() is ready.

    Parameters

    @@ -831,7 +846,7 @@

    ostree_sysroot_is_booted ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_is_booted (OstreeSysroot *self);

    Can only be invoked after ostree_sysroot_initialize().

    @@ -851,7 +866,7 @@

    Returns

    -

    TRUE iff the sysroot points to a booted deployment

    +

    TRUE iff the sysroot points to a booted deployment

    Since: 2020.1

    @@ -887,10 +902,10 @@

    ostree_sysroot_ensure_initialized ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_ensure_initialized (OstreeSysroot *self,
    -                                   GCancellable *cancellable,
    -                                   GError **error);
    + GCancellable *cancellable, + GError **error);

    Ensure that self is set up as a valid rootfs, by creating /ostree/repo, among other things.

    @@ -937,7 +952,7 @@

    ostree_sysroot_get_deployments ()

    -
    GPtrArray *
    +
    GPtrArray *
     ostree_sysroot_get_deployments (OstreeSysroot *self);

    Parameters

    @@ -982,14 +997,14 @@

    Returns

    -

    The currently booted deployment, or NULL if none.

    -

    [transfer none]

    +

    The currently booted deployment, or NULL if none.

    +

    [transfer none][nullable]


    ostree_sysroot_get_deployment_directory ()

    -
    GFile *
    +
    GFile *
     ostree_sysroot_get_deployment_directory
                                    (OstreeSysroot *self,
                                     OstreeDeployment *deployment);
    @@ -1055,15 +1070,15 @@

    Returns

    Path to deployment root directory, relative to sysroot.

    -

    [transfer full]

    +

    [transfer full][not nullable]


    ostree_sysroot_get_deployment_origin_path ()

    -
    GFile *
    +
    GFile *
     ostree_sysroot_get_deployment_origin_path
    -                               (GFile *deployment_path);
    + (GFile *deployment_path);

    Parameters

    @@ -1088,10 +1103,10 @@

    ostree_sysroot_cleanup ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_cleanup (OstreeSysroot *self,
    -                        GCancellable *cancellable,
    -                        GError **error);
    + GCancellable *cancellable, + GError **error);

    Delete any state that resulted from a partially completed transaction, such as incomplete deployments.

    @@ -1125,10 +1140,10 @@

    ostree_sysroot_prepare_cleanup ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_prepare_cleanup (OstreeSysroot *self,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + GCancellable *cancellable, + GError **error);

    Like ostree_sysroot_cleanup() in that it cleans up incomplete deployments and old boot versions, but does NOT prune the repository.

    @@ -1162,14 +1177,14 @@

    ostree_sysroot_cleanup_prune_repo ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_cleanup_prune_repo (OstreeSysroot *sysroot,
                                        OstreeRepoPruneOptions *options,
    -                                   gint *out_objects_total,
    -                                   gint *out_objects_pruned,
    -                                   guint64 *out_pruned_object_size_total,
    -                                   GCancellable *cancellable,
    -                                   GError **error);
    + gint *out_objects_total, + gint *out_objects_pruned, + guint64 *out_pruned_object_size_total, + GCancellable *cancellable, + GError **error);

    Prune the system repository. This is a thin wrapper around ostree_repo_prune_from_reachable(); the primary addition is that this function automatically gathers @@ -1254,18 +1269,18 @@

    Returns

    The OSTree repository in sysroot self .

    -

    [transfer none]

    +

    [transfer none][not nullable]

    Since: 2017.7


    ostree_sysroot_get_repo ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_get_repo (OstreeSysroot *self,
                              OstreeRepo **out_repo,
    -                         GCancellable *cancellable,
    -                         GError **error);
    + GCancellable *cancellable, + GError **error);

    Retrieve the OSTree repository in sysroot self . The repo is guaranteed to be open (see ostree_repo_open()).

    @@ -1304,7 +1319,7 @@

    Returns

    -

    TRUE on success, FALSE otherwise

    +

    TRUE on success, FALSE otherwise


    @@ -1329,19 +1344,19 @@

    Returns

    -

    The currently staged deployment, or NULL if none.

    -

    [transfer none]

    +

    The currently staged deployment, or NULL if none.

    +

    [transfer none][nullable]

    Since: 2018.5


    ostree_sysroot_init_osname ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_init_osname (OstreeSysroot *self,
                                 const char *osname,
    -                            GCancellable *cancellable,
    -                            GError **error);
    + GCancellable *cancellable, + GError **error);

    Initialize the directory structure for an "osname", which is a group of operating system deployments, with a shared /var. One is required for generating a deployment.

    @@ -1382,12 +1397,12 @@

    ostree_sysroot_deployment_set_kargs ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_deployment_set_kargs (OstreeSysroot *self,
                                          OstreeDeployment *deployment,
                                          char **new_kargs,
    -                                     GCancellable *cancellable,
    -                                     GError **error);
    + GCancellable *cancellable, + GError **error);

    Entirely replace the kernel arguments of deployment with the values in new_kargs @@ -1433,12 +1448,12 @@


    ostree_sysroot_deployment_set_mutable ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_deployment_set_mutable (OstreeSysroot *self,
                                            OstreeDeployment *deployment,
    -                                       gboolean is_mutable,
    -                                       GCancellable *cancellable,
    -                                       GError **error);
    + gboolean is_mutable, + GCancellable *cancellable, + GError **error);

    By default, deployment directories are not mutable. This function will allow making them temporarily mutable, for example to allow layering additional non-OSTree content.

    @@ -1483,12 +1498,12 @@

    ostree_sysroot_deployment_unlock ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_deployment_unlock (OstreeSysroot *self,
                                       OstreeDeployment *deployment,
                                       OstreeDeploymentUnlockedState unlocked_state,
    -                                  GCancellable *cancellable,
    -                                  GError **error);
    + GCancellable *cancellable, + GError **error);

    Configure the target deployment deployment such that it is writable. There are multiple modes, essentially differing @@ -1537,11 +1552,11 @@


    ostree_sysroot_deployment_set_pinned ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_deployment_set_pinned (OstreeSysroot *self,
                                           OstreeDeployment *deployment,
    -                                      gboolean is_pinned,
    -                                      GError **error);
    + gboolean is_pinned, + GError **error);

    By default, deployments may be subject to garbage collection. Typical uses of libostree only retain at most 2 deployments. If is_pinned is TRUE, a @@ -1588,11 +1603,11 @@


    ostree_sysroot_write_deployments ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_write_deployments (OstreeSysroot *self,
    -                                  GPtrArray *new_deployments,
    -                                  GCancellable *cancellable,
    -                                  GError **error);
    + GPtrArray *new_deployments, + GCancellable *cancellable, + GError **error);

    Older version of ostree_sysroot_write_deployments_with_options(). This version will perform post-deployment cleanup by default.

    @@ -1631,13 +1646,13 @@

    ostree_sysroot_write_deployments_with_options ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_write_deployments_with_options
                                    (OstreeSysroot *self,
    -                                GPtrArray *new_deployments,
    +                                GPtrArray *new_deployments,
                                     OstreeSysrootWriteDeploymentsOpts *opts,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + GCancellable *cancellable, + GError **error);

    Assuming new_deployments have already been deployed in place on disk via ostree_sysroot_deploy_tree(), atomically update bootloader configuration. By @@ -1688,17 +1703,17 @@


    ostree_sysroot_write_origin_file ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_write_origin_file (OstreeSysroot *sysroot,
                                       OstreeDeployment *deployment,
    -                                  GKeyFile *new_origin,
    -                                  GCancellable *cancellable,
    -                                  GError **error);
    + GKeyFile *new_origin, + GCancellable *cancellable, + GError **error);

    Immediately replace the origin file of the referenced deployment with the contents of new_origin . If new_origin - is NULL, + is NULL, this function will write the current origin of deployment .

    @@ -1742,16 +1757,16 @@

    ostree_sysroot_stage_tree ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_stage_tree (OstreeSysroot *self,
                                const char *osname,
                                const char *revision,
    -                           GKeyFile *origin,
    +                           GKeyFile *origin,
                                OstreeDeployment *merge_deployment,
                                char **override_kernel_argv,
                                OstreeDeployment **out_new_deployment,
    -                           GCancellable *cancellable,
    -                           GError **error);
    + GCancellable *cancellable, + GError **error);

    Older version of ostree_sysroot_stage_tree_with_options().

    Parameters

    @@ -1789,7 +1804,7 @@
    - + @@ -1815,17 +1830,17 @@

    ostree_sysroot_stage_tree_with_options ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_stage_tree_with_options
                                    (OstreeSysroot *self,
                                     const char *osname,
                                     const char *revision,
    -                                GKeyFile *origin,
    +                                GKeyFile *origin,
                                     OstreeDeployment *merge_deployment,
                                     OstreeSysrootDeployTreeOpts *opts,
                                     OstreeDeployment **out_new_deployment,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + GCancellable *cancellable, + GError **error);

    Like ostree_sysroot_deploy_tree(), but "finalization" only occurs at OS shutdown time.

    @@ -1890,12 +1905,12 @@

    ostree_sysroot_stage_overlay_initrd ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_stage_overlay_initrd (OstreeSysroot *self,
                                          int fd,
                                          char **out_checksum,
    -                                     GCancellable *cancellable,
    -                                     GError **error);
    + GCancellable *cancellable, + GError **error);

    Stage an overlay initrd to be used in an upcoming deployment. Returns a checksum which can be passed to ostree_sysroot_deploy_tree_with_options() or ostree_sysroot_stage_tree_with_options() via the overlay_initrds array option.

    @@ -1915,8 +1930,8 @@
    - - + + @@ -1941,16 +1956,16 @@

    ostree_sysroot_deploy_tree ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_deploy_tree (OstreeSysroot *self,
                                 const char *osname,
                                 const char *revision,
    -                            GKeyFile *origin,
    +                            GKeyFile *origin,
                                 OstreeDeployment *provided_merge_deployment,
                                 char **override_kernel_argv,
                                 OstreeDeployment **out_new_deployment,
    -                            GCancellable *cancellable,
    -                            GError **error);
    + GCancellable *cancellable, + GError **error);

    Older version of ostree_sysroot_stage_tree_with_options().

    Parameters

    @@ -1988,7 +2003,7 @@
    - + @@ -2014,17 +2029,17 @@

    ostree_sysroot_deploy_tree_with_options ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_deploy_tree_with_options
                                    (OstreeSysroot *self,
                                     const char *osname,
                                     const char *revision,
    -                                GKeyFile *origin,
    +                                GKeyFile *origin,
                                     OstreeDeployment *provided_merge_deployment,
                                     OstreeSysrootDeployTreeOpts *opts,
                                     OstreeDeployment **out_new_deployment,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + GCancellable *cancellable, + GError **error);

    Check out deployment tree with revision revision , performing a 3 way merge with provided_merge_deployment @@ -2123,7 +2138,7 @@

    Returns

    Configuration merge deployment.

    -

    [transfer full]

    +

    [transfer full][nullable]


    @@ -2135,7 +2150,7 @@ OstreeDeployment **out_pending, OstreeDeployment **out_rollback);

    Find the pending and rollback deployments for osname -. Pass NULL for osname +. Pass NULL for osname to use the booted deployment's osname. By default, pending deployment is the first deployment in the order that matches osname @@ -2165,12 +2180,12 @@

    - + - +

    override_kernel_argv

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

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

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

    fd

    File descriptor to overlay initrd.

    [transfer none]

    File descriptor to overlay initrd

     

    out_checksum

    override_kernel_argv

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

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

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

    out_pending

    The pending deployment.

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

    out_rollback

    The rollback deployment.

    [out][allow-none][transfer full][out][nullable][optional][transfer full]
    @@ -2180,7 +2195,7 @@

    ostree_sysroot_origin_new_from_refspec ()

    -
    GKeyFile *
    +
    GKeyFile *
     ostree_sysroot_origin_new_from_refspec
                                    (OstreeSysroot *self,
                                     const char *refspec);
    @@ -2210,21 +2225,21 @@

    Returns

    A new config file which sets refspec as an origin.

    -

    [transfer full]

    +

    [transfer full][not nullable]


    ostree_sysroot_simple_write_deployment ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_simple_write_deployment
                                    (OstreeSysroot *sysroot,
                                     const char *osname,
                                     OstreeDeployment *new_deployment,
                                     OstreeDeployment *merge_deployment,
                                     OstreeSysrootSimpleWriteDeploymentFlags flags,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + GCancellable *cancellable, + GError **error);

    Prepend new_deployment to the list of deployments, commit, and cleanup. By default, all other deployments for the given osname @@ -2349,6 +2364,6 @@

    +
    Generated by GTK-Doc V1.33.0
    \ No newline at end of file diff -Nru ostree-2020.7/apidoc/html/ostree-SELinux-policy-management.html ostree-2020.8/apidoc/html/ostree-SELinux-policy-management.html --- ostree-2020.7/apidoc/html/ostree-SELinux-policy-management.html 2020-10-14 00:06:16.000000000 +0000 +++ ostree-2020.8/apidoc/html/ostree-SELinux-policy-management.html 2020-11-17 15:38:22.000000000 +0000 @@ -8,7 +8,7 @@ - + @@ -57,7 +57,7 @@
    -GFile * +GFile * ostree_sepolicy_get_path () @@ -72,7 +72,7 @@
    -gboolean +gboolean ostree_sepolicy_get_label () @@ -87,7 +87,7 @@
    -gboolean +gboolean ostree_sepolicy_restorecon () @@ -95,7 +95,7 @@
    -gboolean +gboolean ostree_sepolicy_setfscreatecon () @@ -141,9 +141,9 @@

    ostree_sepolicy_new ()

    OstreeSePolicy *
    -ostree_sepolicy_new (GFile *path,
    -                     GCancellable *cancellable,
    -                     GError **error);
    +ostree_sepolicy_new (GFile *path, + GCancellable *cancellable, + GError **error);

    Parameters

    @@ -183,8 +183,8 @@

    ostree_sepolicy_new_at ()

    OstreeSePolicy *
     ostree_sepolicy_new_at (int rootfs_dfd,
    -                        GCancellable *cancellable,
    -                        GError **error);
    + GCancellable *cancellable, + GError **error);

    Parameters

    @@ -223,7 +223,7 @@

    ostree_sepolicy_get_path ()

    -
    GFile *
    +
    GFile *
     ostree_sepolicy_get_path (OstreeSePolicy *self);

    Returns

    @@ -245,18 +245,18 @@

    ostree_sepolicy_get_label ()

    -
    gboolean
    +
    gboolean
     ostree_sepolicy_get_label (OstreeSePolicy *self,
                                const char *relpath,
    -                           guint32 unix_mode,
    +                           guint32 unix_mode,
                                char **out_label,
    -                           GCancellable *cancellable,
    -                           GError **error);
    + GCancellable *cancellable, + GError **error);

    Store in out_label the security context for the given relpath and mode unix_mode -. If the policy does not specify a label, NULL +. If the policy does not specify a label, NULL will be returned.

    Parameters

    @@ -316,15 +316,15 @@

    ostree_sepolicy_restorecon ()

    -
    gboolean
    +
    gboolean
     ostree_sepolicy_restorecon (OstreeSePolicy *self,
                                 const char *path,
    -                            GFileInfo *info,
    -                            GFile *target,
    +                            GFileInfo *info,
    +                            GFile *target,
                                 OstreeSePolicyRestoreconFlags flags,
                                 char **out_new_label,
    -                            GCancellable *cancellable,
    -                            GError **error);
    + GCancellable *cancellable, + GError **error);

    Reset the security context of target based on the SELinux policy.

    @@ -363,7 +363,7 @@
    - + @@ -383,11 +383,11 @@

    ostree_sepolicy_setfscreatecon ()

    -
    gboolean
    +
    gboolean
     ostree_sepolicy_setfscreatecon (OstreeSePolicy *self,
                                     const char *path,
    -                                guint32 mode,
    -                                GError **error);
    + guint32 mode, + GError **error);

    Parameters

    out_new_label

    New label, or NULL if unchanged.

    New label, or NULL if unchanged.

    [allow-none][out]
    @@ -486,6 +486,6 @@ +
    Generated by GTK-Doc V1.33.0 \ No newline at end of file diff -Nru ostree-2020.7/apidoc/html/ostree-Signature-management.html ostree-2020.8/apidoc/html/ostree-Signature-management.html --- ostree-2020.7/apidoc/html/ostree-Signature-management.html 2020-10-14 00:06:16.000000000 +0000 +++ ostree-2020.8/apidoc/html/ostree-Signature-management.html 2020-11-17 15:38:22.000000000 +0000 @@ -8,7 +8,7 @@ - + @@ -41,7 +41,7 @@ - - - - + - + @@ -254,13 +254,13 @@

    ostree_sign_commit_verify ()

    -
    gboolean
    +
    gboolean
     ostree_sign_commit_verify (OstreeSign *self,
                                OstreeRepo *repo,
    -                           const gchar *commit_checksum,
    +                           const gchar *commit_checksum,
                                char **out_success_message,
    -                           GCancellable *cancellable,
    -                           GError **error);
    + GCancellable *cancellable, + GError **error);

    Verify if commit is signed with known key.

    Depending of the signing engine used you will need to load the public key(s) for verification with ostree_sign_set_pk, @@ -296,12 +296,12 @@

    - + - + @@ -320,12 +320,12 @@

    ostree_sign_data ()

    -
    gboolean
    +
    gboolean
     ostree_sign_data (OstreeSign *self,
    -                  GBytes *data,
    -                  GBytes **signature,
    -                  GCancellable *cancellable,
    -                  GError **error);
    + GBytes *data, + GBytes **signature, + GCancellable *cancellable, + GError **error);

    Sign the given data with pre-loaded secret key.

    Depending of the signing engine used you will need to load @@ -356,12 +356,12 @@

    - + - + @@ -381,12 +381,12 @@

    ostree_sign_data_verify ()

    -
    gboolean
    +
    gboolean
     ostree_sign_data_verify (OstreeSign *self,
    -                         GBytes *data,
    -                         GVariant *signatures,
    +                         GBytes *data,
    +                         GVariant *signatures,
                              char **out_success_message,
    -                         GError **error);
    + GError **error);

    Verify given data against signatures with pre-loaded public keys.

    Depending of the signing engine used you will need to load the public key(s) with ostree_sign_set_pk, ostree_sign_add_pk @@ -422,7 +422,7 @@

    - + @@ -443,8 +443,8 @@

    ostree_sign_get_by_name ()

    OstreeSign *
    -ostree_sign_get_by_name (const gchar *name,
    -                         GError **error);
    +ostree_sign_get_by_name (const gchar *name, + GError **error);

    Create a new instance of a signing engine.

    Parameters

    @@ -462,7 +462,7 @@
    - + @@ -470,7 +470,7 @@

    Returns

    -

    New signing engine, or NULL if the engine is not known.

    +

    New signing engine, or NULL if the engine is not known.

    [transfer full]

    Since: 2020.2

    @@ -478,7 +478,7 @@

    ostree_sign_get_name ()

    -
    const gchar *
    +
    const gchar *
     ostree_sign_get_name (OstreeSign *self);

    Return the pointer to the name of currently used/selected signing engine.

    @@ -508,10 +508,10 @@

    ostree_sign_add_pk ()

    -
    gboolean
    +
    gboolean
     ostree_sign_add_pk (OstreeSign *self,
    -                    GVariant *public_key,
    -                    GError **error);
    + GVariant *public_key, + GError **error);

    Add the public key for verification. Could be called multiple times for adding all needed keys to be used for verification.

    The public_key @@ -537,7 +537,7 @@

    - + @@ -556,9 +556,9 @@

    ostree_sign_clear_keys ()

    -
    gboolean
    +
    gboolean
     ostree_sign_clear_keys (OstreeSign *self,
    -                        GError **error);
    + GError **error);

    Clear all previously preloaded secret and public keys.

    Parameters

    @@ -576,7 +576,7 @@
    - + @@ -593,10 +593,10 @@

    ostree_sign_load_pk ()

    -
    gboolean
    +
    gboolean
     ostree_sign_load_pk (OstreeSign *self,
    -                     GVariant *options,
    -                     GError **error);
    + GVariant *options, + GError **error);

    Load public keys for verification from anywhere. It is expected that all keys would be added to already pre-loaded keys.

    The options @@ -633,7 +633,7 @@

    - + @@ -652,7 +652,7 @@

    ostree_sign_metadata_format ()

    -
    const gchar *
    +
    const gchar *
     ostree_sign_metadata_format (OstreeSign *self);

    Return the pointer to the string with format used in (detached) metadata for current signing engine.

    @@ -683,7 +683,7 @@

    ostree_sign_metadata_key ()

    -
    const gchar *
    +
    const gchar *
     ostree_sign_metadata_key (OstreeSign *self);

    Return the pointer to the name of the key used in (detached) metadata for current signing engine.

    @@ -714,10 +714,10 @@

    ostree_sign_set_pk ()

    -
    gboolean
    +
    gboolean
     ostree_sign_set_pk (OstreeSign *self,
    -                    GVariant *public_key,
    -                    GError **error);
    + GVariant *public_key, + GError **error);

    Set the public key for verification. It is expected what all previously pre-loaded public keys will be dropped.

    The public_key @@ -743,7 +743,7 @@

    - + @@ -762,10 +762,10 @@

    ostree_sign_set_sk ()

    -
    gboolean
    +
    gboolean
     ostree_sign_set_sk (OstreeSign *self,
    -                    GVariant *secret_key,
    -                    GError **error);
    + GVariant *secret_key, + GError **error);

    Set the secret key to be used for signing data, commits and summary.

    The secret_key argument depends of the particular engine implementation.

    @@ -790,7 +790,7 @@
    - + @@ -809,12 +809,12 @@

    ostree_sign_summary ()

    -
    gboolean
    +
    gboolean
     ostree_sign_summary (OstreeSign *self,
                          OstreeRepo *repo,
    -                     GVariant *keys,
    -                     GCancellable *cancellable,
    -                     GError **error);
    + GVariant *keys, + GCancellable *cancellable, + GError **error);

    Add a signature to a summary file. Based on ostree_repo_add_gpg_signature_summary implementation.

    @@ -843,12 +843,12 @@
    - + - + @@ -871,6 +871,6 @@ +
    Generated by GTK-Doc V1.33.0 \ No newline at end of file diff -Nru ostree-2020.7/apidoc/html/ostree-Simple-upgrade-class.html ostree-2020.8/apidoc/html/ostree-Simple-upgrade-class.html --- ostree-2020.7/apidoc/html/ostree-Simple-upgrade-class.html 2020-10-14 00:06:16.000000000 +0000 +++ ostree-2020.8/apidoc/html/ostree-Simple-upgrade-class.html 2020-11-17 15:38:22.000000000 +0000 @@ -8,7 +8,7 @@ - + @@ -65,7 +65,7 @@
    -GPtrArray * +GPtrArray * ostree_sign_get_all () @@ -49,7 +49,7 @@
    -gboolean +gboolean ostree_sign_commit () @@ -57,7 +57,7 @@
    -gboolean +gboolean ostree_sign_commit_verify () @@ -65,7 +65,7 @@
    -gboolean +gboolean ostree_sign_data () @@ -73,7 +73,7 @@
    -gboolean +gboolean ostree_sign_data_verify () @@ -88,7 +88,7 @@
    const gchar * +const gchar * ostree_sign_get_name () @@ -96,7 +96,7 @@
    -gboolean +gboolean ostree_sign_add_pk () @@ -104,7 +104,7 @@
    -gboolean +gboolean ostree_sign_clear_keys () @@ -112,21 +112,21 @@
    -gboolean +gboolean ostree_sign_load_pk ()
    const gchar * +const gchar * ostree_sign_metadata_format ()
    const gchar * +const gchar * ostree_sign_metadata_key () @@ -134,7 +134,7 @@
    -gboolean +gboolean ostree_sign_set_pk () @@ -142,7 +142,7 @@
    -gboolean +gboolean ostree_sign_set_sk () @@ -150,7 +150,7 @@
    -gboolean +gboolean ostree_sign_summary () @@ -181,7 +181,7 @@

    Functions

    ostree_sign_get_all ()

    -
    GPtrArray *
    +
    GPtrArray *
     ostree_sign_get_all (void);

    Return an array with newly allocated instances of all available signing engines; they will not be initialized.

    @@ -195,12 +195,12 @@

    ostree_sign_commit ()

    -
    gboolean
    +
    gboolean
     ostree_sign_commit (OstreeSign *self,
                         OstreeRepo *repo,
    -                    const gchar *commit_checksum,
    -                    GCancellable *cancellable,
    -                    GError **error);
    + const gchar *commit_checksum, + GCancellable *cancellable, + GError **error);

    Add a signature to a commit.

    Depending of the signing engine used you will need to load the secret key with ostree_sign_set_sk.

    @@ -230,12 +230,12 @@

    cancellable

    A GCancellable

    A GCancellable

     

    error

    a GError

    a GError

     

    cancellable

    A GCancellable

    A GCancellable

     

    error

    a GError

    a GError

     

    cancellable

    A GCancellable

    A GCancellable

     

    error

    a GError

    a GError

     

    error

    a GError

    a GError

     

    error

    return location for a GError

    return location for a GError

     

    error

    a GError

    a GError

     

    error

    a GError

    a GError

     

    error

    a GError

    a GError

     

    error

    a GError

    a GError

     

    error

    a GError

    a GError

     

    cancellable

    A GCancellable

    A GCancellable

     

    error

    a GError

    a GError

     
    -GKeyFile * +GKeyFile * ostree_sysroot_upgrader_get_origin () @@ -73,7 +73,7 @@
    -GKeyFile * +GKeyFile * ostree_sysroot_upgrader_dup_origin () @@ -81,7 +81,7 @@
    -gboolean +gboolean ostree_sysroot_upgrader_set_origin () @@ -97,7 +97,7 @@
    -gboolean +gboolean ostree_sysroot_upgrader_check_timestamps () @@ -105,7 +105,7 @@
    -gboolean +gboolean ostree_sysroot_upgrader_pull () @@ -113,7 +113,7 @@
    -gboolean +gboolean ostree_sysroot_upgrader_pull_one_dir () @@ -121,7 +121,7 @@
    -gboolean +gboolean ostree_sysroot_upgrader_deploy () @@ -164,8 +164,8 @@

    ostree_sysroot_upgrader_new ()

    OstreeSysrootUpgrader *
     ostree_sysroot_upgrader_new (OstreeSysroot *sysroot,
    -                             GCancellable *cancellable,
    -                             GError **error);
    + GCancellable *cancellable, + GError **error);

    Parameters

    @@ -205,8 +205,8 @@
    OstreeSysrootUpgrader *
     ostree_sysroot_upgrader_new_for_os (OstreeSysroot *sysroot,
                                         const char *osname,
    -                                    GCancellable *cancellable,
    -                                    GError **error);
    + GCancellable *cancellable, + GError **error);

    Parameters

    @@ -253,8 +253,8 @@ (OstreeSysroot *sysroot, const char *osname, OstreeSysrootUpgraderFlags flags, - GCancellable *cancellable, - GError **error); + GCancellable *cancellable, + GError **error);

    Parameters

    @@ -301,7 +301,7 @@

    ostree_sysroot_upgrader_get_origin ()

    -
    GKeyFile *
    +
    GKeyFile *
     ostree_sysroot_upgrader_get_origin (OstreeSysrootUpgrader *self);

    Parameters

    @@ -320,14 +320,14 @@

    Returns

    -

    The origin file, or NULL if unknown.

    +

    The origin file, or NULL if unknown.

    [transfer none]


    ostree_sysroot_upgrader_dup_origin ()

    -
    GKeyFile *
    +
    GKeyFile *
     ostree_sysroot_upgrader_dup_origin (OstreeSysrootUpgrader *self);

    Parameters

    @@ -346,18 +346,18 @@

    Returns

    -

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

    +

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

    [transfer full]


    ostree_sysroot_upgrader_set_origin ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_upgrader_set_origin (OstreeSysrootUpgrader *self,
    -                                    GKeyFile *origin,
    -                                    GCancellable *cancellable,
    -                                    GError **error);
    + GKeyFile *origin, + GCancellable *cancellable, + GError **error);

    Replace the origin with origin .

    @@ -416,18 +416,18 @@

    Returns

    -

    A one-line descriptive summary of the origin, or NULL if unknown

    +

    A one-line descriptive summary of the origin, or NULL if unknown


    ostree_sysroot_upgrader_check_timestamps ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_upgrader_check_timestamps
                                    (OstreeRepo *repo,
                                     const char *from_rev,
                                     const char *to_rev,
    -                                GError **error);
    + GError **error);

    Check that the timestamp on to_rev is equal to or newer than from_rev @@ -469,21 +469,21 @@


    ostree_sysroot_upgrader_pull ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_upgrader_pull (OstreeSysrootUpgrader *self,
                                   OstreeRepoPullFlags flags,
                                   OstreeSysrootUpgraderPullFlags upgrader_flags,
                                   OstreeAsyncProgress *progress,
    -                              gboolean *out_changed,
    -                              GCancellable *cancellable,
    -                              GError **error);
    + gboolean *out_changed, + GCancellable *cancellable, + GError **error);

    Perform a pull from the origin. First check if the ref has changed, if so download the linked objects, and store the updated ref locally. Then out_changed - will be TRUE.

    + will be TRUE.

    If the origin remote is unchanged, out_changed will be set to -FALSE.

    +FALSE.

    Parameters

    @@ -535,15 +535,15 @@

    ostree_sysroot_upgrader_pull_one_dir ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_upgrader_pull_one_dir (OstreeSysrootUpgrader *self,
                                           const char *dir_to_pull,
                                           OstreeRepoPullFlags flags,
                                           OstreeSysrootUpgraderPullFlags upgrader_flags,
                                           OstreeAsyncProgress *progress,
    -                                      gboolean *out_changed,
    -                                      GCancellable *cancellable,
    -                                      GError **error);
    + gboolean *out_changed, + GCancellable *cancellable, + GError **error);

    Like ostree_sysroot_upgrader_pull(), but allows retrieving just a subpath of the tree. This can be used to download metadata files from inside the tree such as package databases.

    @@ -603,10 +603,10 @@

    ostree_sysroot_upgrader_deploy ()

    -
    gboolean
    +
    gboolean
     ostree_sysroot_upgrader_deploy (OstreeSysrootUpgrader *self,
    -                                GCancellable *cancellable,
    -                                GError **error);
    + GCancellable *cancellable, + GError **error);

    Write the new deployment to disk, perform a configuration merge with /etc, and update the bootloader configuration.

    @@ -710,6 +710,6 @@
    +
    Generated by GTK-Doc V1.33.0
    \ No newline at end of file diff -Nru ostree-2020.7/apidoc/html/reference.html ostree-2020.8/apidoc/html/reference.html --- ostree-2020.7/apidoc/html/reference.html 2020-10-14 00:06:16.000000000 +0000 +++ ostree-2020.8/apidoc/html/reference.html 2020-11-17 15:38:22.000000000 +0000 @@ -8,7 +8,7 @@ - + @@ -1190,6 +1190,10 @@
    +ostree_repo_gpg_sign_data, function in OstreeRepo +
    +
    +
    ostree_repo_gpg_verify_data, function in OstreeRepo
    @@ -1246,6 +1250,10 @@
    +ostree_repo_list_static_delta_indexes, function in OstreeRepo +
    +
    +
    ostree_repo_list_static_delta_names, function in OstreeRepo
    @@ -1478,6 +1486,10 @@
    +ostree_repo_static_delta_reindex, function in OstreeRepo +
    +
    +
    ostree_repo_static_delta_verify_signature, function in OstreeRepo
    @@ -2052,6 +2064,6 @@ +
    Generated by GTK-Doc V1.33.0 \ No newline at end of file Binary files /tmp/tmpZ6hOwy/vCbjpD3wBE/ostree-2020.7/apidoc/html/right-insensitive.png and /tmp/tmpZ6hOwy/arN91uCVO9/ostree-2020.8/apidoc/html/right-insensitive.png differ Binary files /tmp/tmpZ6hOwy/vCbjpD3wBE/ostree-2020.7/apidoc/html/right.png and /tmp/tmpZ6hOwy/arN91uCVO9/ostree-2020.8/apidoc/html/right.png differ diff -Nru ostree-2020.7/apidoc/html/style.css ostree-2020.8/apidoc/html/style.css --- ostree-2020.7/apidoc/html/style.css 2020-10-14 00:06:16.000000000 +0000 +++ ostree-2020.8/apidoc/html/style.css 2020-11-17 15:38:22.000000000 +0000 @@ -61,18 +61,6 @@ color: #729fcf; } -div.informaltable table -{ - border-collapse: separate; - border-spacing: 1em 0.3em; - border: none; -} - -div.informaltable table td, div.informaltable table th -{ - vertical-align: top; -} - .function_type, .variable_type, .property_type, @@ -127,6 +115,7 @@ margin: 0.25em; } +div.informaltable table[border="1"], div.table table { border-collapse: collapse; @@ -135,6 +124,8 @@ border: solid 1px #babdb6; } +div.informaltable table[border="1"] td, +div.informaltable table th, div.table table td, div.table table th { /* tango:aluminium 3 */ @@ -143,6 +134,7 @@ vertical-align: top; } +div.informaltable table[border="1"] th, div.table table th { /* tango:aluminium 2 */ Binary files /tmp/tmpZ6hOwy/vCbjpD3wBE/ostree-2020.7/apidoc/html/up-insensitive.png and /tmp/tmpZ6hOwy/arN91uCVO9/ostree-2020.8/apidoc/html/up-insensitive.png differ Binary files /tmp/tmpZ6hOwy/vCbjpD3wBE/ostree-2020.7/apidoc/html/up.png and /tmp/tmpZ6hOwy/arN91uCVO9/ostree-2020.8/apidoc/html/up.png differ diff -Nru ostree-2020.7/apidoc/Makefile.in ostree-2020.8/apidoc/Makefile.in --- ostree-2020.7/apidoc/Makefile.in 2020-10-14 00:05:54.000000000 +0000 +++ ostree-2020.8/apidoc/Makefile.in 2020-11-17 15:31:55.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.2 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2020 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -379,6 +379,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ rustc = @rustc@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ diff -Nru ostree-2020.7/apidoc/ostree-sections.txt ostree-2020.8/apidoc/ostree-sections.txt --- ostree-2020.7/apidoc/ostree-sections.txt 2020-10-14 00:06:16.000000000 +0000 +++ ostree-2020.8/apidoc/ostree-sections.txt 2020-11-17 15:38:22.000000000 +0000 @@ -412,6 +412,8 @@ ostree_repo_list_objects ostree_repo_list_commit_objects_starting_with ostree_repo_list_static_delta_names +ostree_repo_list_static_delta_indexes +ostree_repo_static_delta_reindex OstreeStaticDeltaGenerateOpt ostree_repo_static_delta_generate ostree_repo_static_delta_execute_offline_with_signature @@ -445,6 +447,7 @@ ostree_repo_sign_commit ostree_repo_append_gpg_signature ostree_repo_add_gpg_signature_summary +ostree_repo_gpg_sign_data ostree_repo_gpg_verify_data ostree_repo_verify_commit ostree_repo_verify_commit_ext diff -Nru ostree-2020.7/apidoc/version.xml ostree-2020.8/apidoc/version.xml --- ostree-2020.7/apidoc/version.xml 2020-07-22 19:50:13.000000000 +0000 +++ ostree-2020.8/apidoc/version.xml 2020-11-17 15:38:15.000000000 +0000 @@ -1 +1 @@ -2020.4 \ No newline at end of file +2020.8 \ No newline at end of file diff -Nru ostree-2020.7/build-aux/compile ostree-2020.8/build-aux/compile --- ostree-2020.7/build-aux/compile 2020-07-17 01:20:50.000000000 +0000 +++ ostree-2020.8/build-aux/compile 2020-11-17 15:31:55.000000000 +0000 @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2020 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify @@ -53,7 +53,7 @@ MINGW*) file_conv=mingw ;; - CYGWIN*) + CYGWIN* | MSYS*) file_conv=cygwin ;; *) @@ -67,7 +67,7 @@ mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; - cygwin/*) + cygwin/* | msys/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) diff -Nru ostree-2020.7/build-aux/config.guess ostree-2020.8/build-aux/config.guess --- ostree-2020.7/build-aux/config.guess 2020-07-17 01:20:50.000000000 +0000 +++ ostree-2020.8/build-aux/config.guess 2020-11-17 15:31:55.000000000 +0000 @@ -2,7 +2,7 @@ # Attempt to guess a canonical system name. # Copyright 1992-2018 Free Software Foundation, Inc. -timestamp='2018-08-29' +timestamp='2018-02-24' # 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 @@ -84,6 +84,8 @@ exit 1 fi +trap 'exit 1' 1 2 15 + # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a @@ -94,39 +96,34 @@ # Portable tmp directory creation inspired by the Autoconf team. -tmp= -# shellcheck disable=SC2172 -trap 'test -z "$tmp" || rm -fr "$tmp"' 1 2 13 15 -trap 'exitcode=$?; test -z "$tmp" || rm -fr "$tmp"; exit $exitcode' 0 - -set_cc_for_build() { - : "${TMPDIR=/tmp}" - # shellcheck disable=SC2039 - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } - dummy=$tmp/dummy - case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in - ,,) echo "int x;" > "$dummy.c" - for driver in cc gcc c89 c99 ; do - if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then - CC_FOR_BUILD="$driver" - break - fi - done - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; - esac -} +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > "$dummy.c" ; + for c in cc gcc c89 c99 ; do + if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) -if test -f /.attbin/uname ; then +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi @@ -141,7 +138,7 @@ # We could probably try harder. LIBC=gnu - set_cc_for_build + eval "$set_cc_for_build" cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) @@ -202,7 +199,7 @@ os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) - set_cc_for_build + eval "$set_cc_for_build" if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then @@ -240,7 +237,7 @@ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "$machine-${os}${release}${abi-}" + echo "$machine-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` @@ -392,15 +389,20 @@ echo i386-pc-auroraux"$UNAME_RELEASE" exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - UNAME_REL="`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - case `isainfo -b` in - 32) - echo i386-pc-solaris2"$UNAME_REL" - ;; - 64) - echo x86_64-pc-solaris2"$UNAME_REL" - ;; - esac + eval "$set_cc_for_build" + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize @@ -480,7 +482,7 @@ echo clipper-intergraph-clix"$UNAME_RELEASE" exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) - set_cc_for_build + eval "$set_cc_for_build" sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ @@ -577,7 +579,7 @@ exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - set_cc_for_build + eval "$set_cc_for_build" sed 's/^ //' << EOF > "$dummy.c" #include @@ -658,7 +660,7 @@ esac fi if [ "$HP_ARCH" = "" ]; then - set_cc_for_build + eval "$set_cc_for_build" sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE @@ -698,7 +700,7 @@ esac if [ "$HP_ARCH" = hppa2.0w ] then - set_cc_for_build + eval "$set_cc_for_build" # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler @@ -724,7 +726,7 @@ echo ia64-hp-hpux"$HPUX_REV" exit ;; 3050*:HI-UX:*:*) - set_cc_for_build + eval "$set_cc_for_build" sed 's/^ //' << EOF > "$dummy.c" #include int @@ -838,17 +840,6 @@ *:BSD/OS:*:*) echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" exit ;; - arm:FreeBSD:*:*) - UNAME_PROCESSOR=`uname -p` - set_cc_for_build - if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_PCS_VFP - then - echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi - else - echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf - fi - exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case "$UNAME_PROCESSOR" in @@ -903,8 +894,8 @@ # other systems with GNU libc and userland echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" exit ;; - *:Minix:*:*) - echo "$UNAME_MACHINE"-unknown-minix + i*86:Minix:*:*) + echo "$UNAME_MACHINE"-pc-minix exit ;; aarch64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" @@ -931,7 +922,7 @@ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arm*:Linux:*:*) - set_cc_for_build + eval "$set_cc_for_build" if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then @@ -980,7 +971,7 @@ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; mips:Linux:*:* | mips64:Linux:*:*) - set_cc_for_build + eval "$set_cc_for_build" sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef ${UNAME_MACHINE} @@ -1055,7 +1046,11 @@ echo "$UNAME_MACHINE"-dec-linux-"$LIBC" exit ;; x86_64:Linux:*:*) - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + if objdump -f /bin/sh | grep -q elf32-x86-64; then + echo "$UNAME_MACHINE"-pc-linux-"$LIBC"x32 + else + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + fi exit ;; xtensa*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" @@ -1294,7 +1289,7 @@ exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - set_cc_for_build + eval "$set_cc_for_build" if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi @@ -1367,7 +1362,6 @@ # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - # shellcheck disable=SC2154 if test "$cputype" = 386; then UNAME_MACHINE=i386 else @@ -1479,7 +1473,7 @@ exit 1 # Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'write-file-functions 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" diff -Nru ostree-2020.7/build-aux/config.sub ostree-2020.8/build-aux/config.sub --- ostree-2020.7/build-aux/config.sub 2020-07-17 01:20:50.000000000 +0000 +++ ostree-2020.8/build-aux/config.sub 2020-11-17 15:31:55.000000000 +0000 @@ -2,7 +2,7 @@ # Configuration validation subroutine script. # Copyright 1992-2018 Free Software Foundation, Inc. -timestamp='2018-08-29' +timestamp='2018-02-22' # 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 @@ -110,1159 +110,1223 @@ exit 1;; esac -# Split fields of configuration type -IFS="-" read -r field1 field2 field3 field4 <&2 - exit 1 +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | cloudabi*-eabi* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo "$1" | sed 's/-[^-]*$//'` + if [ "$basic_machine" != "$1" ] + then os=`echo "$1" | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. ;; - *-*-*-*) - basic_machine=$field1-$field2 - os=$field3-$field4 + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; - *-*-*) - # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two - # parts - maybe_os=$field2-$field3 - case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \ - | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \ - | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ - | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ - | storm-chaos* | os2-emx* | rtmk-nova*) - basic_machine=$field1 - os=$maybe_os - ;; - android-linux) - basic_machine=$field1-unknown - os=linux-android - ;; - *) - basic_machine=$field1-$field2 - os=$field3 - ;; - esac + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; - *-*) - # A lone config we happen to match not fitting any patern - case $field1-$field2 in - decstation-3100) - basic_machine=mips-dec - os= - ;; - *-*) - # Second component is usually, but not always the OS - case $field2 in - # Prevent following clause from handling this valid os - sun*os*) - basic_machine=$field1 - os=$field2 - ;; - # Manufacturers - dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ - | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ - | unicom* | ibm* | next | hp | isi* | apollo | altos* \ - | convergent* | ncr* | news | 32* | 3600* | 3100* \ - | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ - | ultra | tti* | harris | dolphin | highlevel | gould \ - | cbm | ns | masscomp | apple | axis | knuth | cray \ - | microblaze* | sim | cisco \ - | oki | wec | wrs | winbond) - basic_machine=$field1-$field2 - os= - ;; - *) - basic_machine=$field1 - os=$field2 - ;; - esac - ;; - esac + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; - *) - # Convert single-component short-hands not valid as part of - # multi-component configurations. - case $field1 in - 386bsd) - basic_machine=i386-pc - os=bsd - ;; - a29khif) - basic_machine=a29k-amd - os=udi - ;; - adobe68k) - basic_machine=m68010-adobe - os=scout - ;; - alliant) - basic_machine=fx80-alliant - os= - ;; - altos | altos3068) - basic_machine=m68k-altos - os= - ;; - am29k) - basic_machine=a29k-none - os=bsd - ;; - amdahl) - basic_machine=580-amdahl - os=sysv - ;; - amiga) - basic_machine=m68k-unknown - os= - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=bsd - ;; - aros) - basic_machine=i386-pc - os=aros - ;; - aux) - basic_machine=m68k-apple - os=aux - ;; - balance) - basic_machine=ns32k-sequent - os=dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=linux - ;; - cegcc) - basic_machine=arm-unknown - os=cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=bsd - ;; - convex-c2) - basic_machine=c2-convex - os=bsd - ;; - convex-c32) - basic_machine=c32-convex - os=bsd - ;; - convex-c34) - basic_machine=c34-convex - os=bsd - ;; - convex-c38) - basic_machine=c38-convex - os=bsd - ;; - cray) - basic_machine=j90-cray - os=unicos - ;; - crds | unos) - basic_machine=m68k-crds - os= - ;; - da30) - basic_machine=m68k-da30 - os= - ;; - decstation | pmax | pmin | dec3100 | decstatn) - basic_machine=mips-dec - os= - ;; - delta88) - basic_machine=m88k-motorola - os=sysv3 - ;; - dicos) - basic_machine=i686-pc - os=dicos - ;; - djgpp) - basic_machine=i586-pc - os=msdosdjgpp - ;; - ebmon29k) - basic_machine=a29k-amd - os=ebmon - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=ose - ;; - gmicro) - basic_machine=tron-gmicro - os=sysv - ;; - go32) - basic_machine=i386-pc - os=go32 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=hms - ;; - harris) - basic_machine=m88k-harris - os=sysv3 - ;; - hp300) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=hpux - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=proelf - ;; - i386mach) - basic_machine=i386-mach - os=mach - ;; - vsta) - basic_machine=i386-pc - os=vsta - ;; - isi68 | isi) - basic_machine=m68k-isi - os=sysv - ;; - m68knommu) - basic_machine=m68k-unknown - os=linux - ;; - magnum | m3230) - basic_machine=mips-mips - os=sysv - ;; - merlin) - basic_machine=ns32k-utek - os=sysv - ;; - mingw64) - basic_machine=x86_64-pc - os=mingw64 - ;; - mingw32) - basic_machine=i686-pc - os=mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=mingw32ce - ;; - monitor) - basic_machine=m68k-rom68k - os=coff - ;; - morphos) - basic_machine=powerpc-unknown - os=morphos - ;; - moxiebox) - basic_machine=moxie-unknown - os=moxiebox - ;; - msdos) - basic_machine=i386-pc - os=msdos - ;; - msys) - basic_machine=i686-pc - os=msys - ;; - mvs) - basic_machine=i370-ibm - os=mvs - ;; - nacl) - basic_machine=le32-unknown - os=nacl - ;; - ncr3000) - basic_machine=i486-ncr - os=sysv4 - ;; - netbsd386) - basic_machine=i386-pc - os=netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=newsos - ;; - news1000) - basic_machine=m68030-sony - os=newsos - ;; - necv70) - basic_machine=v70-nec - os=sysv - ;; - nh3000) - basic_machine=m68k-harris - os=cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=cxux - ;; - nindy960) - basic_machine=i960-intel - os=nindy - ;; - mon960) - basic_machine=i960-intel - os=mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=nonstopux - ;; - os400) - basic_machine=powerpc-ibm - os=os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=ose - ;; - os68k) - basic_machine=m68k-none - os=os68k - ;; - paragon) - basic_machine=i860-intel - os=osf - ;; - parisc) - basic_machine=hppa-unknown - os=linux - ;; - pw32) - basic_machine=i586-unknown - os=pw32 - ;; - rdos | rdos64) - basic_machine=x86_64-pc - os=rdos - ;; - rdos32) - basic_machine=i386-pc - os=rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=coff - ;; - sa29200) - basic_machine=a29k-amd - os=udi - ;; - sei) - basic_machine=mips-sei - os=seiux - ;; - sequent) - basic_machine=i386-sequent - os= - ;; - sps7) - basic_machine=m68k-bull - os=sysv2 - ;; - st2000) - basic_machine=m68k-tandem - os= - ;; - stratus) - basic_machine=i860-stratus - os=sysv4 - ;; - sun2) - basic_machine=m68000-sun - os= - ;; - sun2os3) - basic_machine=m68000-sun - os=sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=sunos4 - ;; - sun3) - basic_machine=m68k-sun - os= - ;; - sun3os3) - basic_machine=m68k-sun - os=sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=sunos4 - ;; - sun4) - basic_machine=sparc-sun - os= - ;; - sun4os3) - basic_machine=sparc-sun - os=sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=solaris2 - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - os= - ;; - sv1) - basic_machine=sv1-cray - os=unicos - ;; - symmetry) - basic_machine=i386-sequent - os=dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=unicos - ;; - t90) - basic_machine=t90-cray - os=unicos - ;; - toad1) - basic_machine=pdp10-xkl - os=tops20 - ;; - tpf) - basic_machine=s390x-ibm - os=tpf - ;; - udi29k) - basic_machine=a29k-amd - os=udi - ;; - ultra3) - basic_machine=a29k-nyu - os=sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=none - ;; - vaxv) - basic_machine=vax-dec - os=sysv - ;; - vms) - basic_machine=vax-dec - os=vms - ;; - vxworks960) - basic_machine=i960-wrs - os=vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=vxworks - ;; - xbox) - basic_machine=i686-pc - os=mingw32 - ;; - ymp) - basic_machine=ymp-cray - os=unicos - ;; - *) - basic_machine=$1 - os= - ;; - esac + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint ;; esac -# Decode 1-component or ad-hoc basic machines +# Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in - # Here we handle the default manufacturer of certain CPU types. It is in - # some cases the only manufacturer, in others, it is the most popular. - w89k) - cpu=hppa1.1 - vendor=winbond + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | ba \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia16 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 | or1k | or1knd | or32 \ + | pdp10 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pru \ + | pyramid \ + | riscv32 | riscv64 \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ + | wasm32 \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown ;; - op50n) - cpu=hppa1.1 - vendor=oki + c54x) + basic_machine=tic54x-unknown ;; - op60c) - cpu=hppa1.1 - vendor=oki + c55x) + basic_machine=tic55x-unknown ;; - ibm*) - cpu=i370 - vendor=ibm + c6x) + basic_machine=tic6x-unknown ;; - orion105) - cpu=clipper - vendor=highlevel + leon|leon[3-9]) + basic_machine=sparc-$basic_machine ;; - mac | mpw | mac-mpw) - cpu=m68k - vendor=apple + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + basic_machine=$basic_machine-unknown + os=-none ;; - pmac | pmac-mpw) - cpu=powerpc - vendor=apple + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown ;; + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | ba-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | e2k-* | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ + | ip2k-* | iq2000-* \ + | k1om-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | or1k*-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pru-* \ + | pyramid-* \ + | riscv32-* | riscv64-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | visium-* \ + | wasm32-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-pc + os=-bsd + ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - cpu=m68000 - vendor=att + basic_machine=m68000-att ;; 3b*) - cpu=we32k - vendor=att + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + asmjs) + basic_machine=asmjs-unknown + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=-linux ;; bluegene*) - cpu=powerpc - vendor=ibm - os=cnk + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec ;; decsystem10* | dec10*) - cpu=pdp10 - vendor=dec - os=tops10 + basic_machine=pdp10-dec + os=-tops10 ;; decsystem20* | dec20*) - cpu=pdp10 - vendor=dec - os=tops20 + basic_machine=pdp10-dec + os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) - cpu=m68k - vendor=motorola + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx ;; dpx2*) - cpu=m68k - vendor=bull - os=sysv3 + basic_machine=m68k-bull + os=-sysv3 ;; - encore | umax | mmax) - cpu=ns32k - vendor=encore + e500v[12]) + basic_machine=powerpc-unknown + os=$os"spe" + ;; + e500v[12]-*) + basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=$os"spe" + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon ;; elxsi) - cpu=elxsi - vendor=elxsi - os=${os:-bsd} + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose ;; fx2800) - cpu=i860 - vendor=alliant + basic_machine=i860-alliant ;; genix) - cpu=ns32k - vendor=ns + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 ;; h3050r* | hiux*) - cpu=hppa1.1 - vendor=hitachi - os=hiuxwe2 + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) - cpu=hppa1.0 - vendor=hp + basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) - cpu=m68000 - vendor=hp + basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) - cpu=m68k - vendor=hp + basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) - cpu=hppa1.0 - vendor=hp + basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) - cpu=hppa1.1 - vendor=hp + basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp - cpu=hppa1.1 - vendor=hp + basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp - cpu=hppa1.1 - vendor=hp + basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) - cpu=hppa1.1 - vendor=hp + basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) - cpu=hppa1.0 - vendor=hp + basic_machine=hppa1.0-hp + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm ;; i*86v32) - cpu=`echo "$1" | sed -e 's/86.*/86/'` - vendor=pc - os=sysv32 + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-sysv32 ;; i*86v4*) - cpu=`echo "$1" | sed -e 's/86.*/86/'` - vendor=pc - os=sysv4 + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-sysv4 ;; i*86v) - cpu=`echo "$1" | sed -e 's/86.*/86/'` - vendor=pc - os=sysv + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-sysv ;; i*86sol2) - cpu=`echo "$1" | sed -e 's/86.*/86/'` - vendor=pc - os=solaris2 - ;; - j90 | j90-cray) - cpu=j90 - vendor=cray - os=${os:-unicos} + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + vsta) + basic_machine=i386-unknown + os=-vsta ;; iris | iris4d) - cpu=mips - vendor=sgi + basic_machine=mips-sgi case $os in - irix*) + -irix*) ;; *) - os=irix4 + os=-irix4 ;; esac ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'` + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=-linux + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; miniframe) - cpu=m68000 - vendor=convergent + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; + msdos) + basic_machine=i386-pc + os=-msdos ;; - *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) - cpu=m68k - vendor=atari - os=mint + ms1-*) + basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i686-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos ;; news-3600 | risc-news) - cpu=mips - vendor=sony - os=newsos + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv ;; next | m*-next) - cpu=m68k - vendor=next + basic_machine=m68k-next case $os in - nextstep* ) + -nextstep* ) ;; - ns2*) - os=nextstep2 + -ns2*) + os=-nextstep2 ;; *) - os=nextstep3 + os=-nextstep3 ;; esac ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; np1) - cpu=np1 - vendor=gould + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + nsv-tandem) + basic_machine=nsv-tandem + ;; + nsx-tandem) + basic_machine=nsx-tandem ;; op50n-* | op60c-*) - cpu=hppa1.1 - vendor=oki - os=proelf + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k ;; pa-hitachi) - cpu=hppa1.1 - vendor=hitachi - os=hiuxwe2 + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=-linux ;; pbd) - cpu=sparc - vendor=tti + basic_machine=sparc-tti ;; pbb) - cpu=m68k - vendor=tti + basic_machine=m68k-tti ;; - pc532) - cpu=ns32k - vendor=pc532 + pc532 | pc532-*) + basic_machine=ns32k-pc532 ;; - pn) - cpu=pn - vendor=gould + pc98) + basic_machine=i386-pc ;; - power) - cpu=power - vendor=ibm + pc98-*) + basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; - ps2) - cpu=i386 - vendor=ibm + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc ;; - rm[46]00) - cpu=mips - vendor=siemens + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc ;; - rtpc | rtpc-*) - cpu=romp - vendor=ibm + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc ;; - sde) - cpu=mipsisa32 - vendor=sde - os=${os:-elf} + pentium4) + basic_machine=i786-pc ;; - simso-wrs) - cpu=sparclite - vendor=wrs - os=vxworks + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; - tower | tower-32) - cpu=m68k - vendor=ncr + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; - vpp*|vx|vx-*) - cpu=f301 - vendor=fujitsu + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; - w65) - cpu=w65 - vendor=wdc + pentium4-*) + basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; - w89k-*) - cpu=hppa1.1 - vendor=winbond - os=proelf + pn) + basic_machine=pn-gould ;; - none) - cpu=none - vendor=none + power) basic_machine=power-ibm ;; - leon|leon[3-9]) - cpu=sparc - vendor=$basic_machine + ppc | ppcbe) basic_machine=powerpc-unknown ;; - leon-*|leon[3-9]-*) - cpu=sparc - vendor=`echo "$basic_machine" | sed 's/-.*//'` + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; - - *-*) - IFS="-" read -r cpu vendor <&2 - exit 1 - ;; - esac + echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 + exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. -case $vendor in - digital*) - vendor=dec +case $basic_machine in + *-digital*) + basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'` ;; - commodore*) - vendor=cbm + *-commodore*) + basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'` ;; *) ;; @@ -1270,245 +1334,199 @@ # Decode manufacturer-specific aliases for certain operating systems. -if [ x$os != x ] +if [ x"$os" != x"" ] then case $os in # First match some system type aliases that might get confused # with valid system types. - # solaris* is a basic system type, with this one exception. - auroraux) - os=auroraux + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux ;; - bluegene*) - os=cnk - ;; - solaris1 | solaris1.*) + -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; - solaris) - os=solaris2 + -solaris) + os=-solaris2 ;; - unixware*) - os=sysv4.2uw + -unixware*) + os=-sysv4.2uw ;; - gnu/linux*) + -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # es1800 is here to avoid being matched by es* (a different OS) - es1800*) - os=ose - ;; - # Some version numbers need modification - chorusos*) - os=chorusos - ;; - isc) - os=isc2.2 - ;; - sco6) - os=sco5v6 - ;; - sco5) - os=sco3.2v5 - ;; - sco4) - os=sco3.2v4 - ;; - sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - ;; - sco3.2v[4-9]* | sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - ;; - scout) - # Don't match below - ;; - sco*) - os=sco3.2v2 - ;; - psos*) - os=psos + -es1800*) + os=-ose ;; # Now accept the basic system types. # The portable systems comes first. # Each alternative MUST end in a * to match a version number. - # sysv* is not here because it comes later, after sysvr4. - gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ - | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\ - | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ - | sym* | kopensolaris* | plan9* \ - | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ - | aos* | aros* | cloudabi* | sortix* \ - | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ - | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ - | knetbsd* | mirbsd* | netbsd* \ - | bitrig* | openbsd* | solidbsd* | libertybsd* \ - | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \ - | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ - | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ - | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \ - | chorusrdb* | cegcc* | glidix* \ - | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ - | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \ - | linux-newlib* | linux-musl* | linux-uclibc* \ - | uxpv* | beos* | mpeix* | udk* | moxiebox* \ - | interix* | uwin* | mks* | rhapsody* | darwin* \ - | openstep* | oskit* | conix* | pw32* | nonstopux* \ - | storm-chaos* | tops10* | tenex* | tops20* | its* \ - | os2* | vos* | palmos* | uclinux* | nucleus* \ - | morphos* | superux* | rtmk* | windiss* \ - | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ - | skyos* | haiku* | rdos* | toppers* | drops* | es* \ - | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ - | midnightbsd*) + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \ + | -midnightbsd*) # Remember, each alternative MUST END IN *, to match a version number. ;; - qnx*) - case $cpu in - x86 | i*86) + -qnx*) + case $basic_machine in + x86-* | i*86-*) ;; *) - os=nto-$os + os=-nto$os ;; esac ;; - hiux*) - os=hiuxwe2 + -nto-qnx*) ;; - nto-qnx*) - ;; - nto*) + -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; - sim | xray | os68k* | v88r* \ - | windows* | osx | abug | netware* | os9* \ - | macos* | mpw* | magic* | mmixware* | mon960* | lnews*) - ;; - linux-dietlibc) - os=linux-dietlibc + -sim | -xray | -os68k* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; - linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - lynx*178) - os=lynxos178 - ;; - lynx*5) - os=lynxos5 - ;; - lynx*) - os=lynxos - ;; - mac*) + -mac*) os=`echo "$os" | sed -e 's|mac|macos|'` ;; - opened*) - os=openedition + -linux-dietlibc) + os=-linux-dietlibc ;; - os400*) - os=os400 + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; - sunos5*) + -sunos5*) os=`echo "$os" | sed -e 's|sunos5|solaris2|'` ;; - sunos6*) + -sunos6*) os=`echo "$os" | sed -e 's|sunos6|solaris3|'` ;; - wince*) - os=wince + -opened*) + os=-openedition ;; - utek*) - os=bsd + -os400*) + os=-os400 ;; - dynix*) - os=bsd + -wince*) + os=-wince ;; - acis*) - os=aos + -utek*) + os=-bsd ;; - atheos*) - os=atheos + -dynix*) + os=-bsd ;; - syllable*) - os=syllable + -acis*) + os=-aos ;; - 386bsd) - os=bsd + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable ;; - ctix* | uts*) - os=sysv + -386bsd) + os=-bsd ;; - nova*) - os=rtmk-nova + -ctix* | -uts*) + os=-sysv ;; - ns2) - os=nextstep2 + -nova*) + os=-rtmk-nova ;; - nsk*) - os=nsk + -ns2) + os=-nextstep2 + ;; + -nsk*) + os=-nsk ;; # Preserve the version number of sinix5. - sinix5.*) + -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; - sinix*) - os=sysv4 + -sinix*) + os=-sysv4 ;; - tpf*) - os=tpf + -tpf*) + os=-tpf ;; - triton*) - os=sysv3 + -triton*) + os=-sysv3 ;; - oss*) - os=sysv3 + -oss*) + os=-sysv3 ;; - svr4*) - os=sysv4 + -svr4*) + os=-sysv4 ;; - svr3) - os=sysv3 + -svr3) + os=-sysv3 ;; - sysvr4) - os=sysv4 + -sysvr4) + os=-sysv4 ;; - # This must come after sysvr4. - sysv*) + # This must come after -sysvr4. + -sysv*) ;; - ose*) - os=ose + -ose*) + os=-ose ;; - *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) - os=mint + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint ;; - zvmoe) - os=zvmoe + -zvmoe) + os=-zvmoe ;; - dicos*) - os=dicos + -dicos*) + os=-dicos ;; - pikeos*) + -pikeos*) # Until real need of OS specific support for # particular features comes up, bare metal # configurations are quite functional. - case $cpu in + case $basic_machine in arm*) - os=eabi + os=-eabi ;; *) - os=elf + os=-elf ;; esac ;; - nacl*) - ;; - ios) + -nacl*) ;; - none) + -ios) ;; - *-eabi) + -none) ;; *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 exit 1 ;; @@ -1525,265 +1543,258 @@ # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. -case $cpu-$vendor in +case $basic_machine in score-*) - os=elf + os=-elf ;; spu-*) - os=elf + os=-elf ;; *-acorn) - os=riscix1.2 + os=-riscix1.2 ;; arm*-rebel) - os=linux + os=-linux ;; arm*-semi) - os=aout + os=-aout ;; c4x-* | tic4x-*) - os=coff + os=-coff ;; c8051-*) - os=elf - ;; - clipper-intergraph) - os=clix + os=-elf ;; hexagon-*) - os=elf + os=-elf ;; tic54x-*) - os=coff + os=-coff ;; tic55x-*) - os=coff + os=-coff ;; tic6x-*) - os=coff + os=-coff ;; # This must come before the *-dec entry. pdp10-*) - os=tops20 + os=-tops20 ;; pdp11-*) - os=none + os=-none ;; *-dec | vax-*) - os=ultrix4.2 + os=-ultrix4.2 ;; m68*-apollo) - os=domain + os=-domain ;; i386-sun) - os=sunos4.0.2 + os=-sunos4.0.2 ;; m68000-sun) - os=sunos3 + os=-sunos3 ;; m68*-cisco) - os=aout + os=-aout ;; mep-*) - os=elf + os=-elf ;; mips*-cisco) - os=elf + os=-elf ;; mips*-*) - os=elf + os=-elf ;; or32-*) - os=coff + os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. - os=sysv3 + os=-sysv3 ;; sparc-* | *-sun) - os=sunos4.1.1 + os=-sunos4.1.1 ;; pru-*) - os=elf + os=-elf ;; *-be) - os=beos + os=-beos ;; *-ibm) - os=aix + os=-aix ;; *-knuth) - os=mmixware + os=-mmixware ;; *-wec) - os=proelf + os=-proelf ;; *-winbond) - os=proelf + os=-proelf ;; *-oki) - os=proelf + os=-proelf ;; *-hp) - os=hpux + os=-hpux ;; *-hitachi) - os=hiux + os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=sysv + os=-sysv ;; *-cbm) - os=amigaos + os=-amigaos ;; *-dg) - os=dgux + os=-dgux ;; *-dolphin) - os=sysv3 + os=-sysv3 ;; m68k-ccur) - os=rtu + os=-rtu ;; m88k-omron*) - os=luna + os=-luna ;; *-next) - os=nextstep + os=-nextstep ;; *-sequent) - os=ptx + os=-ptx ;; *-crds) - os=unos + os=-unos ;; *-ns) - os=genix + os=-genix ;; i370-*) - os=mvs + os=-mvs ;; *-gould) - os=sysv + os=-sysv ;; *-highlevel) - os=bsd + os=-bsd ;; *-encore) - os=bsd + os=-bsd ;; *-sgi) - os=irix + os=-irix ;; *-siemens) - os=sysv4 + os=-sysv4 ;; *-masscomp) - os=rtu + os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) - os=uxpv + os=-uxpv ;; *-rom68k) - os=coff + os=-coff ;; *-*bug) - os=coff + os=-coff ;; *-apple) - os=macos + os=-macos ;; *-atari*) - os=mint - ;; - *-wrs) - os=vxworks + os=-mint ;; *) - os=none + os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. -case $vendor in - unknown) +vendor=unknown +case $basic_machine in + *-unknown) case $os in - riscix*) + -riscix*) vendor=acorn ;; - sunos*) + -sunos*) vendor=sun ;; - cnk*|-aix*) + -cnk*|-aix*) vendor=ibm ;; - beos*) + -beos*) vendor=be ;; - hpux*) + -hpux*) vendor=hp ;; - mpeix*) + -mpeix*) vendor=hp ;; - hiux*) + -hiux*) vendor=hitachi ;; - unos*) + -unos*) vendor=crds ;; - dgux*) + -dgux*) vendor=dg ;; - luna*) + -luna*) vendor=omron ;; - genix*) + -genix*) vendor=ns ;; - clix*) - vendor=intergraph - ;; - mvs* | opened*) + -mvs* | -opened*) vendor=ibm ;; - os400*) + -os400*) vendor=ibm ;; - ptx*) + -ptx*) vendor=sequent ;; - tpf*) + -tpf*) vendor=ibm ;; - vxsim* | vxworks* | windiss*) + -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; - aux*) + -aux*) vendor=apple ;; - hms*) + -hms*) vendor=hitachi ;; - mpw* | macos*) + -mpw* | -macos*) vendor=apple ;; - *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; - vos*) + -vos*) vendor=stratus ;; esac + basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"` ;; esac -echo "$cpu-$vendor-$os" +echo "$basic_machine$os" exit # Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'write-file-functions 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" diff -Nru ostree-2020.7/build-aux/depcomp ostree-2020.8/build-aux/depcomp --- ostree-2020.7/build-aux/depcomp 2020-07-17 01:20:50.000000000 +0000 +++ ostree-2020.8/build-aux/depcomp 2020-11-17 15:31:55.000000000 +0000 @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Copyright (C) 1999-2020 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff -Nru ostree-2020.7/build-aux/install-sh ostree-2020.8/build-aux/install-sh --- ostree-2020.7/build-aux/install-sh 2020-07-17 01:20:50.000000000 +0000 +++ ostree-2020.8/build-aux/install-sh 2020-11-17 15:31:55.000000000 +0000 @@ -451,7 +451,18 @@ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + (umask $cp_umask && + { test -z "$stripcmd" || { + # Create $dsttmp read-write so that cp doesn't create it read-only, + # which would cause strip to fail. + if test -z "$doit"; then + : >"$dsttmp" # No need to fork-exec 'touch'. + else + $doit touch "$dsttmp" + fi + } + } && + $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # diff -Nru ostree-2020.7/build-aux/ltmain.sh ostree-2020.8/build-aux/ltmain.sh --- ostree-2020.7/build-aux/ltmain.sh 2020-07-17 01:20:47.000000000 +0000 +++ ostree-2020.8/build-aux/ltmain.sh 2020-11-17 15:31:53.000000000 +0000 @@ -31,7 +31,7 @@ PROGRAM=libtool PACKAGE=libtool -VERSION=2.4.6 +VERSION="2.4.6 Debian-2.4.6-14" package_revision=2.4.6 @@ -387,7 +387,7 @@ # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # -# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name +# debug_cmd='echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: @@ -1370,7 +1370,7 @@ #! /bin/sh # Set a version string for this script. -scriptversion=2014-01-07.03; # UTC +scriptversion=2015-10-07.11; # UTC # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 @@ -1530,6 +1530,8 @@ { $debug_cmd + _G_rc_run_hooks=false + case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook funcions.n" ;; @@ -1538,16 +1540,16 @@ eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do - eval $_G_hook '"$@"' - - # store returned options list back into positional - # parameters for next 'cmd' execution. - eval _G_hook_result=\$${_G_hook}_result - eval set dummy "$_G_hook_result"; shift + if eval $_G_hook '"$@"'; then + # store returned options list back into positional + # parameters for next 'cmd' execution. + eval _G_hook_result=\$${_G_hook}_result + eval set dummy "$_G_hook_result"; shift + _G_rc_run_hooks=: + fi done - func_quote_for_eval ${1+"$@"} - func_run_hooks_result=$func_quote_for_eval_result + $_G_rc_run_hooks && func_run_hooks_result=$_G_hook_result } @@ -1557,10 +1559,16 @@ ## --------------- ## # In order to add your own option parsing hooks, you must accept the -# full positional parameter list in your hook function, remove any -# options that you action, and then pass back the remaining unprocessed +# full positional parameter list in your hook function, you may remove/edit +# any options that you action, and then pass back the remaining unprocessed # options in '_result', escaped suitably for -# 'eval'. Like this: +# 'eval'. In this case you also must return $EXIT_SUCCESS to let the +# hook's caller know that it should pay attention to +# '_result'. Returning $EXIT_FAILURE signalizes that +# arguments are left untouched by the hook and therefore caller will ignore the +# result variable. +# +# Like this: # # my_options_prep () # { @@ -1570,9 +1578,11 @@ # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' -# -# func_quote_for_eval ${1+"$@"} -# my_options_prep_result=$func_quote_for_eval_result +# # No change in '$@' (ignored completely by this hook). There is +# # no need to do the equivalent (but slower) action: +# # func_quote_for_eval ${1+"$@"} +# # my_options_prep_result=$func_quote_for_eval_result +# false # } # func_add_hook func_options_prep my_options_prep # @@ -1581,25 +1591,37 @@ # { # $debug_cmd # +# args_changed=false +# # # Note that for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in -# --silent|-s) opt_silent=: ;; +# --silent|-s) opt_silent=: +# args_changed=: +# ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift +# args_changed=: # ;; -# *) set dummy "$_G_opt" "$*"; shift; break ;; +# *) # Make sure the first unrecognised option "$_G_opt" +# # is added back to "$@", we could need that later +# # if $args_changed is true. +# set dummy "$_G_opt" ${1+"$@"}; shift; break ;; # esac # done # -# func_quote_for_eval ${1+"$@"} -# my_silent_option_result=$func_quote_for_eval_result +# if $args_changed; then +# func_quote_for_eval ${1+"$@"} +# my_silent_option_result=$func_quote_for_eval_result +# fi +# +# $args_changed # } # func_add_hook func_parse_options my_silent_option # @@ -1611,16 +1633,32 @@ # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # -# func_quote_for_eval ${1+"$@"} -# my_option_validation_result=$func_quote_for_eval_result +# false # } # func_add_hook func_validate_options my_option_validation # -# You'll alse need to manually amend $usage_message to reflect the extra +# You'll also need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. +# func_options_finish [ARG]... +# ---------------------------- +# Finishing the option parse loop (call 'func_options' hooks ATM). +func_options_finish () +{ + $debug_cmd + + _G_func_options_finish_exit=false + if func_run_hooks func_options ${1+"$@"}; then + func_options_finish_result=$func_run_hooks_result + _G_func_options_finish_exit=: + fi + + $_G_func_options_finish_exit +} + + # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the @@ -1630,17 +1668,28 @@ { $debug_cmd - func_options_prep ${1+"$@"} - eval func_parse_options \ - ${func_options_prep_result+"$func_options_prep_result"} - eval func_validate_options \ - ${func_parse_options_result+"$func_parse_options_result"} + _G_rc_options=false + + for my_func in options_prep parse_options validate_options options_finish + do + if eval func_$my_func '${1+"$@"}'; then + eval _G_res_var='$'"func_${my_func}_result" + eval set dummy "$_G_res_var" ; shift + _G_rc_options=: + fi + done - eval func_run_hooks func_options \ - ${func_validate_options_result+"$func_validate_options_result"} + # Save modified positional parameters for caller. As a top-level + # options-parser function we always need to set the 'func_options_result' + # variable (regardless the $_G_rc_options value). + if $_G_rc_options; then + func_options_result=$_G_res_var + else + func_quote_for_eval ${1+"$@"} + func_options_result=$func_quote_for_eval_result + fi - # save modified positional parameters for caller - func_options_result=$func_run_hooks_result + $_G_rc_options } @@ -1649,9 +1698,9 @@ # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and -# needs to propogate that back to rest of this script, then the complete +# needs to propagate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before -# returning. +# returning $EXIT_SUCCESS (otherwise $EXIT_FAILURE is returned). func_hookable func_options_prep func_options_prep () { @@ -1661,10 +1710,14 @@ opt_verbose=false opt_warning_types= - func_run_hooks func_options_prep ${1+"$@"} + _G_rc_options_prep=false + if func_run_hooks func_options_prep ${1+"$@"}; then + _G_rc_options_prep=: + # save modified positional parameters for caller + func_options_prep_result=$func_run_hooks_result + fi - # save modified positional parameters for caller - func_options_prep_result=$func_run_hooks_result + $_G_rc_options_prep } @@ -1678,18 +1731,20 @@ func_parse_options_result= + _G_rc_parse_options=false # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. - func_run_hooks func_parse_options ${1+"$@"} - - # Adjust func_parse_options positional parameters to match - eval set dummy "$func_run_hooks_result"; shift + if func_run_hooks func_parse_options ${1+"$@"}; then + eval set dummy "$func_run_hooks_result"; shift + _G_rc_parse_options=: + fi # Break out of the loop if we already parsed every option. test $# -gt 0 || break + _G_match_parse_options=: _G_opt=$1 shift case $_G_opt in @@ -1704,7 +1759,10 @@ ;; --warnings|--warning|-W) - test $# = 0 && func_missing_arg $_G_opt && break + if test $# = 0 && func_missing_arg $_G_opt; then + _G_rc_parse_options=: + break + fi case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above @@ -1757,15 +1815,25 @@ shift ;; - --) break ;; + --) _G_rc_parse_options=: ; break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; - *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + *) set dummy "$_G_opt" ${1+"$@"}; shift + _G_match_parse_options=false + break + ;; esac + + $_G_match_parse_options && _G_rc_parse_options=: done - # save modified positional parameters for caller - func_quote_for_eval ${1+"$@"} - func_parse_options_result=$func_quote_for_eval_result + + if $_G_rc_parse_options; then + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + func_parse_options_result=$func_quote_for_eval_result + fi + + $_G_rc_parse_options } @@ -1778,16 +1846,21 @@ { $debug_cmd + _G_rc_validate_options=false + # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" - func_run_hooks func_validate_options ${1+"$@"} + if func_run_hooks func_validate_options ${1+"$@"}; then + # save modified positional parameters for caller + func_validate_options_result=$func_run_hooks_result + _G_rc_validate_options=: + fi # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE - # save modified positional parameters for caller - func_validate_options_result=$func_run_hooks_result + $_G_rc_validate_options } @@ -2068,12 +2141,12 @@ compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) - version: $progname (GNU libtool) 2.4.6 + version: $progname $scriptversion Debian-2.4.6-14 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . -GNU libtool home page: . +GNU libtool home page: . General help using GNU software: ." exit 0 } @@ -2124,7 +2197,7 @@ # a configuration failure hint, and exit. func_fatal_configuration () { - func_fatal_error ${1+"$@"} \ + func__fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } @@ -2270,6 +2343,8 @@ nonopt= preserve_args= + _G_rc_lt_options_prep=: + # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) @@ -2293,11 +2368,18 @@ uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; + *) + _G_rc_lt_options_prep=false + ;; esac - # Pass back the list of options. - func_quote_for_eval ${1+"$@"} - libtool_options_prep_result=$func_quote_for_eval_result + if $_G_rc_lt_options_prep; then + # Pass back the list of options. + func_quote_for_eval ${1+"$@"} + libtool_options_prep_result=$func_quote_for_eval_result + fi + + $_G_rc_lt_options_prep } func_add_hook func_options_prep libtool_options_prep @@ -2309,9 +2391,12 @@ { $debug_cmd + _G_rc_lt_parse_options=false + # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do + _G_match_lt_parse_options=: _G_opt=$1 shift case $_G_opt in @@ -2386,15 +2471,22 @@ func_append preserve_args " $_G_opt" ;; - # An option not handled by this hook function: - *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + # An option not handled by this hook function: + *) set dummy "$_G_opt" ${1+"$@"} ; shift + _G_match_lt_parse_options=false + break + ;; esac + $_G_match_lt_parse_options && _G_rc_lt_parse_options=: done + if $_G_rc_lt_parse_options; then + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + libtool_parse_options_result=$func_quote_for_eval_result + fi - # save modified positional parameters for caller - func_quote_for_eval ${1+"$@"} - libtool_parse_options_result=$func_quote_for_eval_result + $_G_rc_lt_parse_options } func_add_hook func_parse_options libtool_parse_options @@ -7274,10 +7366,14 @@ # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization # -specs=* GCC specs files # -stdlib=* select c++ std lib with clang + # -fsanitize=* Clang/GCC memory and address sanitizer + # -fuse-ld=* Linker select flags for GCC + # -static-* direct GCC to link specific libraries statically + # -fcilkplus Cilk Plus language extension features for C/C++ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ - -specs=*) + -specs=*|-fsanitize=*|-fuse-ld=*|-static-*|-fcilkplus) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result func_append compile_command " $arg" @@ -7570,7 +7666,10 @@ case $pass in dlopen) libs=$dlfiles ;; dlpreopen) libs=$dlprefiles ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + link) + libs="$deplibs %DEPLIBS%" + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" + ;; esac fi if test lib,dlpreopen = "$linkmode,$pass"; then @@ -7889,19 +7988,19 @@ # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done elif test prog != "$linkmode" && test lib != "$linkmode"; then func_fatal_error "'$lib' is not a convenience library" fi - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done continue fi # $pass = conv @@ -8825,6 +8924,9 @@ revision=$number_minor lt_irix_increment=no ;; + *) + func_fatal_configuration "$modename: unknown library version type '$version_type'" + ;; esac ;; no) diff -Nru ostree-2020.7/build-aux/missing ostree-2020.8/build-aux/missing --- ostree-2020.7/build-aux/missing 2020-07-17 01:20:50.000000000 +0000 +++ ostree-2020.8/build-aux/missing 2020-11-17 15:31:55.000000000 +0000 @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2020 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify diff -Nru ostree-2020.7/build-aux/test-driver ostree-2020.8/build-aux/test-driver --- ostree-2020.7/build-aux/test-driver 2020-07-17 01:20:51.000000000 +0000 +++ ostree-2020.8/build-aux/test-driver 2020-11-17 15:31:55.000000000 +0000 @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 2011-2018 Free Software Foundation, Inc. +# Copyright (C) 2011-2020 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff -Nru ostree-2020.7/buildutil/libtool.m4 ostree-2020.8/buildutil/libtool.m4 --- ostree-2020.7/buildutil/libtool.m4 2020-07-17 01:20:47.000000000 +0000 +++ ostree-2020.8/buildutil/libtool.m4 2020-11-17 15:31:53.000000000 +0000 @@ -728,7 +728,6 @@ cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. @@ -1042,8 +1041,8 @@ _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$AR cr libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cr libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF @@ -1493,7 +1492,7 @@ m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} -: ${AR_FLAGS=cru} +: ${AR_FLAGS=cr} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) @@ -2867,9 +2866,6 @@ # before this can be enabled. hardcode_into_libs=yes - # Add ABI-specific directories to the system library path. - sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command @@ -2878,7 +2874,7 @@ # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -2890,6 +2886,18 @@ dynamic_linker='GNU/Linux ld.so' ;; +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + netbsd*) version_type=sunos need_lib_prefix=no @@ -3549,7 +3557,7 @@ lt_cv_deplibs_check_method=pass_all ;; -netbsd*) +netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else @@ -4055,7 +4063,8 @@ if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -4427,7 +4436,7 @@ ;; esac ;; - netbsd*) + netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise @@ -4695,6 +4704,12 @@ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; + # flang / f18. f95 an alias for gfortran or flang on Debian + flang* | f18* | f95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) @@ -4939,6 +4954,9 @@ ;; esac ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; @@ -5001,6 +5019,9 @@ openbsd* | bitrig*) with_gnu_ld=no ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes @@ -5255,7 +5276,7 @@ fi ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= @@ -5776,6 +5797,7 @@ if test yes = "$lt_cv_irix_exported_symbol"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi + _LT_TAGVAR(link_all_deplibs, $1)=no else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' @@ -5797,7 +5819,7 @@ esac ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else @@ -6423,7 +6445,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else GXX=no @@ -6798,7 +6820,7 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -6863,7 +6885,7 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -7202,7 +7224,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # FIXME: insert proper C++ library support @@ -7286,7 +7308,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. @@ -7297,7 +7319,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' diff -Nru ostree-2020.7/configure ostree-2020.8/configure --- ostree-2020.7/configure 2020-10-14 00:05:54.000000000 +0000 +++ ostree-2020.8/configure 2020-11-17 15:31:54.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for libostree 2020.7. +# Generated by GNU Autoconf 2.69 for libostree 2020.8. # # Report bugs to . # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='libostree' PACKAGE_TARNAME='libostree' -PACKAGE_VERSION='2020.7' -PACKAGE_STRING='libostree 2020.7' +PACKAGE_VERSION='2020.8' +PACKAGE_STRING='libostree 2020.8' PACKAGE_BUGREPORT='walters@verbum.org' PACKAGE_URL='' @@ -891,6 +891,7 @@ docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -1059,6 +1060,7 @@ sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1311,6 +1313,15 @@ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1448,7 +1459,7 @@ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1561,7 +1572,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libostree 2020.7 to adapt to many kinds of systems. +\`configure' configures libostree 2020.8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1601,6 +1612,7 @@ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1631,7 +1643,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libostree 2020.7:";; + short | recursive ) echo "Configuration of libostree 2020.8:";; esac cat <<\_ACEOF @@ -1896,7 +1908,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libostree configure 2020.7 +libostree configure 2020.8 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2368,7 +2380,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libostree $as_me 2020.7, which was +It was created by libostree $as_me 2020.8, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3236,7 +3248,7 @@ # Define the identity of the package. PACKAGE='libostree' - VERSION='2020.7' + VERSION='2020.8' # Some tools Automake needs. @@ -5021,7 +5033,7 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -5067,7 +5079,7 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -5091,7 +5103,7 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -5136,7 +5148,7 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -5160,7 +5172,7 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -5970,9 +5982,9 @@ YEAR_VERSION=2020 -RELEASE_VERSION=7 +RELEASE_VERSION=8 -PACKAGE_VERSION=2020.7 +PACKAGE_VERSION=2020.8 if echo "$CFLAGS" | grep -q -E -e '-Werror($| )'; then : @@ -7266,7 +7278,7 @@ lt_cv_deplibs_check_method=pass_all ;; -netbsd*) +netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else @@ -7628,7 +7640,7 @@ fi : ${AR=ar} -: ${AR_FLAGS=cru} +: ${AR_FLAGS=cr} @@ -8129,11 +8141,8 @@ test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -9352,8 +9361,8 @@ _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 + echo "$AR cr libconftest.a conftest.o" >&5 + $AR cr libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF @@ -10214,6 +10223,12 @@ lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; + # flang / f18. f95 an alias for gfortran or flang on Debian + flang* | f18* | f95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) @@ -10690,6 +10705,9 @@ openbsd* | bitrig*) with_gnu_ld=no ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs=no + ;; esac ld_shlibs=yes @@ -10944,7 +10962,7 @@ fi ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= @@ -11614,6 +11632,7 @@ if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi + link_all_deplibs=no else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' @@ -11635,7 +11654,7 @@ esac ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else @@ -12730,9 +12749,6 @@ # before this can be enabled. hardcode_into_libs=yes - # Add ABI-specific directories to the system library path. - sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command @@ -12741,7 +12757,7 @@ # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -12753,6 +12769,18 @@ dynamic_linker='GNU/Linux ld.so' ;; +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + netbsd*) version_type=sunos need_lib_prefix=no @@ -14356,8 +14384,8 @@ pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB" >&5 -$as_echo_n "checking for GLIB... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $pkg_config_args" >&5 +$as_echo_n "checking for $pkg_config_args... " >&6; } if test -n "$GLIB_CFLAGS"; then pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS" @@ -14397,7 +14425,7 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -14415,7 +14443,7 @@ : elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } : else @@ -14580,7 +14608,7 @@ glib_major_version, glib_minor_version, glib_micro_version); printf ("*** was found! If pkg-config was correct, then it is best\n"); printf ("*** to remove the old version of GLib. You may also be able to fix the error\n"); - printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** by modifying your LD_LIBRARY_PATH environment variable, or by editing\n"); printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); printf("*** required on your system.\n"); printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); @@ -14590,7 +14618,7 @@ (glib_minor_version != GLIB_MINOR_VERSION) || (glib_micro_version != GLIB_MICRO_VERSION)) { - printf("*** GLIB header files (version %d.%d.%d) do not match\n", + printf("*** GLib header files (version %d.%d.%d) do not match\n", GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION); printf("*** library (version %d.%d.%d)\n", glib_major_version, glib_minor_version, glib_micro_version); @@ -14605,18 +14633,18 @@ } else { - printf("\n*** An old version of GLIB (%u.%u.%u) was found.\n", + printf("\n*** An old version of GLib (%u.%u.%u) was found.\n", glib_major_version, glib_minor_version, glib_micro_version); - printf("*** You need a version of GLIB newer than %u.%u.%u. The latest version of\n", + printf("*** You need a version of GLib newer than %u.%u.%u. The latest version of\n", major, minor, micro); - printf("*** GLIB is always available from ftp://ftp.gtk.org.\n"); + printf("*** GLib is always available from ftp://ftp.gtk.org.\n"); printf("***\n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); - printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n"); + printf("*** of GLib, but you can also set the PKG_CONFIG environment to point to the\n"); printf("*** correct copy of pkg-config. (In this case, you will have to\n"); - printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** modify your LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time))\n"); } } @@ -14651,7 +14679,7 @@ if test -f conf.glibtest ; then : else - echo "*** Could not run GLIB test program, checking why..." + echo "*** Could not run GLib test program, checking why..." ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GLIB_CFLAGS" @@ -14672,8 +14700,8 @@ _ACEOF if ac_fn_c_try_link "$LINENO"; then : echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding GLIB or finding the wrong" - echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your" + echo "*** that the run-time linker is not finding GLib or finding the wrong" + echo "*** version of GLib. If it is not finding GLib, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" @@ -14682,7 +14710,7 @@ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means GLIB is incorrectly installed." + echo "*** exact error that occurred. This usually means GLib is incorrectly installed." fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext @@ -14704,8 +14732,8 @@ GIO_DEPENDENCY="gio-unix-2.0 >= 2.40.0" pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OT_DEP_GIO_UNIX" >&5 -$as_echo_n "checking for OT_DEP_GIO_UNIX... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $GIO_DEPENDENCY" >&5 +$as_echo_n "checking for $GIO_DEPENDENCY... " >&6; } if test -n "$OT_DEP_GIO_UNIX_CFLAGS"; then pkg_cv_OT_DEP_GIO_UNIX_CFLAGS="$OT_DEP_GIO_UNIX_CFLAGS" @@ -14745,7 +14773,7 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -14772,7 +14800,7 @@ and OT_DEP_GIO_UNIX_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} @@ -14796,8 +14824,8 @@ pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OT_DEP_LZMA" >&5 -$as_echo_n "checking for OT_DEP_LZMA... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for liblzma >= 5.0.5" >&5 +$as_echo_n "checking for liblzma >= 5.0.5... " >&6; } if test -n "$OT_DEP_LZMA_CFLAGS"; then pkg_cv_OT_DEP_LZMA_CFLAGS="$OT_DEP_LZMA_CFLAGS" @@ -14837,7 +14865,7 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -14864,7 +14892,7 @@ and OT_DEP_LZMA_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} @@ -14888,8 +14916,8 @@ pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OT_DEP_ZLIB" >&5 -$as_echo_n "checking for OT_DEP_ZLIB... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for zlib" >&5 +$as_echo_n "checking for zlib... " >&6; } if test -n "$OT_DEP_ZLIB_CFLAGS"; then pkg_cv_OT_DEP_ZLIB_CFLAGS="$OT_DEP_ZLIB_CFLAGS" @@ -14929,7 +14957,7 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -14956,7 +14984,7 @@ and OT_DEP_ZLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} @@ -14980,8 +15008,8 @@ pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OT_DEP_E2P" >&5 -$as_echo_n "checking for OT_DEP_E2P... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for e2p" >&5 +$as_echo_n "checking for e2p... " >&6; } if test -n "$OT_DEP_E2P_CFLAGS"; then pkg_cv_OT_DEP_E2P_CFLAGS="$OT_DEP_E2P_CFLAGS" @@ -15021,7 +15049,7 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -15048,7 +15076,7 @@ and OT_DEP_E2P_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} @@ -15083,8 +15111,8 @@ pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OT_DEP_CURL" >&5 -$as_echo_n "checking for OT_DEP_CURL... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libcurl >= $CURL_DEPENDENCY" >&5 +$as_echo_n "checking for libcurl >= $CURL_DEPENDENCY... " >&6; } if test -n "$OT_DEP_CURL_CFLAGS"; then pkg_cv_OT_DEP_CURL_CFLAGS="$OT_DEP_CURL_CFLAGS" @@ -15124,7 +15152,7 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -15151,7 +15179,7 @@ and OT_DEP_CURL_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} @@ -15250,8 +15278,8 @@ pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OT_DEP_SOUP" >&5 -$as_echo_n "checking for OT_DEP_SOUP... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $SOUP_DEPENDENCY" >&5 +$as_echo_n "checking for $SOUP_DEPENDENCY... " >&6; } if test -n "$OT_DEP_SOUP_CFLAGS"; then pkg_cv_OT_DEP_SOUP_CFLAGS="$OT_DEP_SOUP_CFLAGS" @@ -15291,7 +15319,7 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -15318,7 +15346,7 @@ and OT_DEP_SOUP_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} @@ -15702,8 +15730,8 @@ pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OT_DEP_GPGME" >&5 -$as_echo_n "checking for OT_DEP_GPGME... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gpgme-pthread >= $LIBGPGME_DEPENDENCY" >&5 +$as_echo_n "checking for gpgme-pthread >= $LIBGPGME_DEPENDENCY... " >&6; } if test -n "$OT_DEP_GPGME_CFLAGS"; then pkg_cv_OT_DEP_GPGME_CFLAGS="$OT_DEP_GPGME_CFLAGS" @@ -15743,7 +15771,7 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -15857,7 +15885,7 @@ elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } @@ -15971,8 +15999,8 @@ OSTREE_FEATURES="$OSTREE_FEATURES gpgme" pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OT_DEP_GPG_ERROR" >&5 -$as_echo_n "checking for OT_DEP_GPG_ERROR... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gpg-error" >&5 +$as_echo_n "checking for gpg-error... " >&6; } if test -n "$OT_DEP_GPG_ERROR_CFLAGS"; then pkg_cv_OT_DEP_GPG_ERROR_CFLAGS="$OT_DEP_GPG_ERROR_CFLAGS" @@ -16012,7 +16040,7 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -16074,7 +16102,7 @@ OT_DEP_GPG_ERROR_LIBS="$( $GPG_ERROR_CONFIG --libs )" elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } # Extract the first word of "gpg-error-config", so it can be a program name with args. @@ -16166,8 +16194,8 @@ pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OT_DEP_LIBSODIUM" >&5 -$as_echo_n "checking for OT_DEP_LIBSODIUM... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsodium >= $LIBSODIUM_DEPENDENCY" >&5 +$as_echo_n "checking for libsodium >= $LIBSODIUM_DEPENDENCY... " >&6; } if test -n "$OT_DEP_LIBSODIUM_CFLAGS"; then pkg_cv_OT_DEP_LIBSODIUM_CFLAGS="$OT_DEP_LIBSODIUM_CFLAGS" @@ -16207,7 +16235,7 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -16225,7 +16253,7 @@ have_libsodium=no elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_libsodium=no else @@ -16502,8 +16530,8 @@ if test "x$PACKAGE_NAME" != "xglib"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTKDOC_DEPS" >&5 -$as_echo_n "checking for GTKDOC_DEPS... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" >&5 +$as_echo_n "checking for glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0... " >&6; } if test -n "$GTKDOC_DEPS_CFLAGS"; then pkg_cv_GTKDOC_DEPS_CFLAGS="$GTKDOC_DEPS_CFLAGS" @@ -16543,7 +16571,7 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -16561,7 +16589,7 @@ : elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } : else @@ -16897,8 +16925,8 @@ pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OT_DEP_LIBARCHIVE" >&5 -$as_echo_n "checking for OT_DEP_LIBARCHIVE... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LIBARCHIVE_DEPENDENCY" >&5 +$as_echo_n "checking for $LIBARCHIVE_DEPENDENCY... " >&6; } if test -n "$OT_DEP_LIBARCHIVE_CFLAGS"; then pkg_cv_OT_DEP_LIBARCHIVE_CFLAGS="$OT_DEP_LIBARCHIVE_CFLAGS" @@ -16938,7 +16966,7 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -16965,7 +16993,7 @@ and OT_DEP_LIBARCHIVE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} @@ -17060,8 +17088,8 @@ pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OT_DEP_SELINUX" >&5 -$as_echo_n "checking for OT_DEP_SELINUX... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $SELINUX_DEPENDENCY" >&5 +$as_echo_n "checking for $SELINUX_DEPENDENCY... " >&6; } if test -n "$OT_DEP_SELINUX_CFLAGS"; then pkg_cv_OT_DEP_SELINUX_CFLAGS="$OT_DEP_SELINUX_CFLAGS" @@ -17101,7 +17129,7 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -17128,7 +17156,7 @@ and OT_DEP_SELINUX_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} @@ -17227,8 +17255,8 @@ pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OT_DEP_CRYPTO" >&5 -$as_echo_n "checking for OT_DEP_CRYPTO... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $OPENSSL_DEPENDENCY" >&5 +$as_echo_n "checking for $OPENSSL_DEPENDENCY... " >&6; } if test -n "$OT_DEP_CRYPTO_CFLAGS"; then pkg_cv_OT_DEP_CRYPTO_CFLAGS="$OT_DEP_CRYPTO_CFLAGS" @@ -17268,7 +17296,7 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -17295,7 +17323,7 @@ and OT_DEP_CRYPTO_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} @@ -17342,8 +17370,8 @@ pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OT_DEP_CRYPTO" >&5 -$as_echo_n "checking for OT_DEP_CRYPTO... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $GNUTLS_DEPENDENCY" >&5 +$as_echo_n "checking for $GNUTLS_DEPENDENCY... " >&6; } if test -n "$OT_DEP_CRYPTO_CFLAGS"; then pkg_cv_OT_DEP_CRYPTO_CFLAGS="$OT_DEP_CRYPTO_CFLAGS" @@ -17383,7 +17411,7 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -17410,7 +17438,7 @@ and OT_DEP_CRYPTO_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} @@ -17485,8 +17513,8 @@ pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OT_DEP_AVAHI" >&5 -$as_echo_n "checking for OT_DEP_AVAHI... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $AVAHI_DEPENDENCY" >&5 +$as_echo_n "checking for $AVAHI_DEPENDENCY... " >&6; } if test -n "$OT_DEP_AVAHI_CFLAGS"; then pkg_cv_OT_DEP_AVAHI_CFLAGS="$OT_DEP_AVAHI_CFLAGS" @@ -17526,7 +17554,7 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -17553,7 +17581,7 @@ and OT_DEP_AVAHI_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} @@ -17634,8 +17662,8 @@ pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OT_DEP_LIBMOUNT" >&5 -$as_echo_n "checking for OT_DEP_LIBMOUNT... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LIBMOUNT_DEPENDENCY" >&5 +$as_echo_n "checking for $LIBMOUNT_DEPENDENCY... " >&6; } if test -n "$OT_DEP_LIBMOUNT_CFLAGS"; then pkg_cv_OT_DEP_LIBMOUNT_CFLAGS="$OT_DEP_LIBMOUNT_CFLAGS" @@ -17675,7 +17703,7 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -17702,7 +17730,7 @@ and OT_DEP_LIBMOUNT_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} @@ -17770,8 +17798,8 @@ pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BUILDOPT_FUSE" >&5 -$as_echo_n "checking for BUILDOPT_FUSE... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $FUSE_DEPENDENCY" >&5 +$as_echo_n "checking for $FUSE_DEPENDENCY... " >&6; } if test -n "$BUILDOPT_FUSE_CFLAGS"; then pkg_cv_BUILDOPT_FUSE_CFLAGS="$BUILDOPT_FUSE_CFLAGS" @@ -17811,7 +17839,7 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -17838,7 +17866,7 @@ and BUILDOPT_FUSE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} @@ -17957,8 +17985,8 @@ pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBSYSTEMD" >&5 -$as_echo_n "checking for LIBSYSTEMD... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsystemd" >&5 +$as_echo_n "checking for libsystemd... " >&6; } if test -n "$LIBSYSTEMD_CFLAGS"; then pkg_cv_LIBSYSTEMD_CFLAGS="$LIBSYSTEMD_CFLAGS" @@ -17998,7 +18026,7 @@ if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -18025,7 +18053,7 @@ and LIBSYSTEMD_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} @@ -19026,7 +19054,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libostree $as_me 2020.7, which was +This file was extended by libostree $as_me 2020.8, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -19092,7 +19120,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -libostree config.status 2020.7 +libostree config.status 2020.8 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -20188,7 +20216,9 @@ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments - for automatic dependency tracking. Try re-running configure with the + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE=\"gmake\" (or whatever is + necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See \`config.log' for more details" "$LINENO" 5; } @@ -20215,7 +20245,6 @@ cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. diff -Nru ostree-2020.7/configure.ac ostree-2020.8/configure.ac --- ostree-2020.7/configure.ac 2020-10-14 00:05:41.000000000 +0000 +++ ostree-2020.8/configure.ac 2020-11-17 15:24:36.000000000 +0000 @@ -7,7 +7,7 @@ dnl `git-evtag` to create the tag and push it. Finally, create a GitHub release and attach dnl the tarball from `make dist`. m4_define([year_version], [2020]) -m4_define([release_version], [7]) +m4_define([release_version], [8]) m4_define([package_version], [year_version.release_version]) AC_INIT([libostree], [package_version], [walters@verbum.org]) is_release_build=yes diff -Nru ostree-2020.7/debian/changelog ostree-2020.8/debian/changelog --- ostree-2020.7/debian/changelog 2020-10-14 14:54:19.000000000 +0000 +++ ostree-2020.8/debian/changelog 2020-11-22 13:24:35.000000000 +0000 @@ -1,3 +1,18 @@ +ostree (2020.8-2) unstable; urgency=medium + + * d/p/test-pull-summary-sigs-Set-timestamps-to-serve-expected-f.patch: + Add proposed patch to fix test failures when run on tmpfs + (Closes: #975418) + + -- Simon McVittie Sun, 22 Nov 2020 13:24:35 +0000 + +ostree (2020.8-1) unstable; urgency=medium + + * New upstream release + * Update symbols file + + -- Simon McVittie Thu, 19 Nov 2020 14:47:09 +0000 + ostree (2020.7-1) unstable; urgency=medium * New upstream release diff -Nru ostree-2020.7/debian/libostree-1-1.symbols ostree-2020.8/debian/libostree-1-1.symbols --- ostree-2020.7/debian/libostree-1-1.symbols 2020-10-14 14:54:19.000000000 +0000 +++ ostree-2020.8/debian/libostree-1-1.symbols 2020-11-22 13:24:35.000000000 +0000 @@ -35,6 +35,7 @@ LIBOSTREE_2020.1@LIBOSTREE_2020.1 2020.1 LIBOSTREE_2020.4@LIBOSTREE_2020.4 2020.4 LIBOSTREE_2020.7@LIBOSTREE_2020.7 2020.7 + LIBOSTREE_2020.8@LIBOSTREE_2020.8 2020.8 ostree_async_progress_copy_state@LIBOSTREE_2019.6 2019.6 ostree_async_progress_finish@LIBOSTREE_2016.3 2016.4 ostree_async_progress_get@LIBOSTREE_2017.6 2017.6 @@ -284,6 +285,7 @@ ostree_repo_get_remote_list_option@LIBOSTREE_2016.5 2016.5 ostree_repo_get_remote_option@LIBOSTREE_2016.5 2016.5 ostree_repo_get_type@LIBOSTREE_2016.3 2016.4 + ostree_repo_gpg_sign_data@LIBOSTREE_2020.8 2020.8 ostree_repo_gpg_verify_data@LIBOSTREE_2016.6 2016.6 ostree_repo_has_object@LIBOSTREE_2016.3 2016.4 ostree_repo_hash@LIBOSTREE_2017.12 2017.12 @@ -297,6 +299,7 @@ ostree_repo_list_objects@LIBOSTREE_2016.3 2016.4 ostree_repo_list_refs@LIBOSTREE_2016.3 2016.4 ostree_repo_list_refs_ext@LIBOSTREE_2016.4 2016.4 + ostree_repo_list_static_delta_indexes@LIBOSTREE_2020.8 2020.8 ostree_repo_list_static_delta_names@LIBOSTREE_2016.3 2016.4 ostree_repo_load_commit@LIBOSTREE_2016.3 2016.4 ostree_repo_load_file@LIBOSTREE_2016.3 2016.4 @@ -354,6 +357,7 @@ ostree_repo_static_delta_execute_offline@LIBOSTREE_2016.3 2016.4 ostree_repo_static_delta_execute_offline_with_signature@LIBOSTREE_2020.7 2020.7 ostree_repo_static_delta_generate@LIBOSTREE_2016.3 2016.4 + ostree_repo_static_delta_reindex@LIBOSTREE_2020.8 2020.8 ostree_repo_static_delta_verify_signature@LIBOSTREE_2020.7 2020.7 ostree_repo_transaction_set_collection_ref@LIBOSTREE_2018.6 2018.6 ostree_repo_transaction_set_ref@LIBOSTREE_2016.3 2016.4 diff -Nru ostree-2020.7/debian/patches/series ostree-2020.8/debian/patches/series --- ostree-2020.7/debian/patches/series 2020-10-14 14:54:19.000000000 +0000 +++ ostree-2020.8/debian/patches/series 2020-11-22 13:24:35.000000000 +0000 @@ -1 +1,2 @@ +test-pull-summary-sigs-Set-timestamps-to-serve-expected-f.patch debian/Skip-test-pull-repeated-during-CI.patch diff -Nru ostree-2020.7/debian/patches/test-pull-summary-sigs-Set-timestamps-to-serve-expected-f.patch ostree-2020.8/debian/patches/test-pull-summary-sigs-Set-timestamps-to-serve-expected-f.patch --- ostree-2020.7/debian/patches/test-pull-summary-sigs-Set-timestamps-to-serve-expected-f.patch 1970-01-01 00:00:00.000000000 +0000 +++ ostree-2020.8/debian/patches/test-pull-summary-sigs-Set-timestamps-to-serve-expected-f.patch 2020-11-22 13:24:35.000000000 +0000 @@ -0,0 +1,100 @@ +From: Simon McVittie +Date: Sun, 22 Nov 2020 13:17:24 +0000 +Subject: test-pull-summary-sigs: Set timestamps to serve expected files + +If this is not done, the test can fail when the temporary directory is +a tmpfs: for example this happens during build-time testing with /var/tmp +on tmpfs or TEST_TMPDIR pointing to a tmpfs, or installed-tests with +gnome-desktop-testing-runner allocating the test directory on a tmpfs. + +In particular, many of Debian's official autobuilders now do the entire +build and test procedure in a chroot hosted on a tmpfs, to improve build +performance and prevent fsync overhead. + +In this situation, it appears that overwriting summary.sig with a copy +of summary.sig.2 is not sufficient for the web server to tell the +libostree client that it needs to be re-downloaded. I'm not completely +sure why, because tmpfs does appear to have sub-second-resolution +timestamps, but forcing a distinct mtime is certainly enough to +resolve it. + +Resolves: https://github.com/ostreedev/ostree/issues/2245 +Bug-Debian: https://bugs.debian.org/975418 +Signed-off-by: Simon McVittie +Forwarded: https://github.com/ostreedev/ostree/pull/2246 +--- + tests/test-pull-summary-sigs.sh | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/tests/test-pull-summary-sigs.sh b/tests/test-pull-summary-sigs.sh +index 401e88c..3819cbf 100755 +--- a/tests/test-pull-summary-sigs.sh ++++ b/tests/test-pull-summary-sigs.sh +@@ -175,6 +175,8 @@ cd ${test_tmpdir} + # Reset to the old valid summary and pull to cache it + cp ${test_tmpdir}/ostree-srv/gnomerepo/summary{.1,} + cp ${test_tmpdir}/ostree-srv/gnomerepo/summary.sig{.1,} ++touch -t 200101010101 ${test_tmpdir}/ostree-srv/gnomerepo/summary ++touch -t 200101010101 ${test_tmpdir}/ostree-srv/gnomerepo/summary.sig + repo_reinit + ${OSTREE} --repo=repo pull origin main + assert_has_file repo/tmp/cache/summaries/origin +@@ -186,6 +188,7 @@ cmp repo/tmp/cache/summaries/origin.sig ${test_tmpdir}/ostree-srv/gnomerepo/summ + # summary signature since it was generated on the server between the + # requests + cp ${test_tmpdir}/ostree-srv/gnomerepo/summary.sig{.2,} ++touch -t 200202020202 ${test_tmpdir}/ostree-srv/gnomerepo/summary.sig + if ${OSTREE} --repo=repo pull origin main 2>err.txt; then + assert_not_reached "Successful pull with old summary" + fi +@@ -197,6 +200,7 @@ cmp repo/tmp/cache/summaries/origin.sig ${test_tmpdir}/ostree-srv/gnomerepo/summ + + # Publish correct summary and check that subsequent pull succeeds + cp ${test_tmpdir}/ostree-srv/gnomerepo/summary{.2,} ++touch -t 200202020202 ${test_tmpdir}/ostree-srv/gnomerepo/summary + ${OSTREE} --repo=repo pull origin main + assert_has_file repo/tmp/cache/summaries/origin + assert_has_file repo/tmp/cache/summaries/origin.sig +@@ -208,6 +212,8 @@ echo "ok pull with signed summary remote old summary" + # Reset to the old valid summary and pull to cache it + cp ${test_tmpdir}/ostree-srv/gnomerepo/summary{.1,} + cp ${test_tmpdir}/ostree-srv/gnomerepo/summary.sig{.1,} ++touch -t 200101010101 ${test_tmpdir}/ostree-srv/gnomerepo/summary ++touch -t 200101010101 ${test_tmpdir}/ostree-srv/gnomerepo/summary.sig + repo_reinit + ${OSTREE} --repo=repo pull origin main + assert_has_file repo/tmp/cache/summaries/origin +@@ -220,6 +226,7 @@ cmp repo/tmp/cache/summaries/origin.sig ${test_tmpdir}/ostree-srv/gnomerepo/summ + # is caching the old signature. This should succeed because the cached + # old summary is used. + cp ${test_tmpdir}/ostree-srv/gnomerepo/summary{.2,} ++touch -t 200202020202 ${test_tmpdir}/ostree-srv/gnomerepo/summary + ${OSTREE} --repo=repo pull origin main + assert_has_file repo/tmp/cache/summaries/origin + assert_has_file repo/tmp/cache/summaries/origin.sig +@@ -228,6 +235,7 @@ cmp repo/tmp/cache/summaries/origin.sig ${test_tmpdir}/ostree-srv/gnomerepo/summ + + # Publish correct signature and check that subsequent pull succeeds + cp ${test_tmpdir}/ostree-srv/gnomerepo/summary.sig{.2,} ++touch -t 200202020202 ${test_tmpdir}/ostree-srv/gnomerepo/summary.sig + ${OSTREE} --repo=repo pull origin main + assert_has_file repo/tmp/cache/summaries/origin + assert_has_file repo/tmp/cache/summaries/origin.sig +@@ -239,6 +247,8 @@ echo "ok pull with signed summary remote old summary signature" + # Reset to the old valid summary and pull to cache it + cp ${test_tmpdir}/ostree-srv/gnomerepo/summary{.1,} + cp ${test_tmpdir}/ostree-srv/gnomerepo/summary.sig{.1,} ++touch -t 200101010101 ${test_tmpdir}/ostree-srv/gnomerepo/summary ++touch -t 200101010101 ${test_tmpdir}/ostree-srv/gnomerepo/summary.sig + repo_reinit + ${OSTREE} --repo=repo pull origin main + assert_has_file repo/tmp/cache/summaries/origin +@@ -273,6 +283,8 @@ cmp repo/tmp/cache/summaries/origin.sig ${test_tmpdir}/ostree-srv/gnomerepo/summ + # Publish new signature and check that subsequent pull succeeds + cp ${test_tmpdir}/ostree-srv/gnomerepo/summary{.2,} + cp ${test_tmpdir}/ostree-srv/gnomerepo/summary.sig{.2,} ++touch -t 200202020202 ${test_tmpdir}/ostree-srv/gnomerepo/summary ++touch -t 200202020202 ${test_tmpdir}/ostree-srv/gnomerepo/summary.sig + ${OSTREE} --repo=repo pull origin main + assert_has_file repo/tmp/cache/summaries/origin + assert_has_file repo/tmp/cache/summaries/origin.sig diff -Nru ostree-2020.7/Makefile.in ostree-2020.8/Makefile.in --- ostree-2020.7/Makefile.in 2020-10-14 00:05:54.000000000 +0000 +++ ostree-2020.8/Makefile.in 2020-11-17 15:31:55.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile.in generated by automake 1.16.2 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2018 Free Software Foundation, Inc. +# Copyright (C) 1994-2020 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -454,16 +454,15 @@ @USE_GPGME_FALSE@ src/libostree/ostree-gpg-verify-result-dummy.c \ @USE_GPGME_FALSE@ $(NULL) -@BUILDOPT_IS_DEVEL_BUILD_TRUE@am__append_26 = $(top_srcdir)/src/libostree/libostree-devel.sym # Some change between rust-1.21.0-1.fc27 and rust-1.22.1-1.fc27.x86_64 -@ENABLE_RUST_TRUE@am__append_27 = -ldl -@USE_LIBARCHIVE_TRUE@am__append_28 = $(OT_DEP_LIBARCHIVE_CFLAGS) -@USE_LIBARCHIVE_TRUE@am__append_29 = $(OT_DEP_LIBARCHIVE_LIBS) -@USE_AVAHI_TRUE@am__append_30 = $(OT_DEP_AVAHI_CFLAGS) -@USE_AVAHI_TRUE@am__append_31 = $(OT_DEP_AVAHI_LIBS) -@BUILDOPT_SYSTEMD_TRUE@am__append_32 = $(LIBSYSTEMD_CFLAGS) -@BUILDOPT_SYSTEMD_TRUE@am__append_33 = $(LIBSYSTEMD_LIBS) -@USE_CURL_OR_SOUP_TRUE@am__append_34 = \ +@ENABLE_RUST_TRUE@am__append_26 = -ldl +@USE_LIBARCHIVE_TRUE@am__append_27 = $(OT_DEP_LIBARCHIVE_CFLAGS) +@USE_LIBARCHIVE_TRUE@am__append_28 = $(OT_DEP_LIBARCHIVE_LIBS) +@USE_AVAHI_TRUE@am__append_29 = $(OT_DEP_AVAHI_CFLAGS) +@USE_AVAHI_TRUE@am__append_30 = $(OT_DEP_AVAHI_LIBS) +@BUILDOPT_SYSTEMD_TRUE@am__append_31 = $(LIBSYSTEMD_CFLAGS) +@BUILDOPT_SYSTEMD_TRUE@am__append_32 = $(LIBSYSTEMD_LIBS) +@USE_CURL_OR_SOUP_TRUE@am__append_33 = \ @USE_CURL_OR_SOUP_TRUE@ src/libostree/ostree-fetcher.h \ @USE_CURL_OR_SOUP_TRUE@ src/libostree/ostree-fetcher-util.h \ @USE_CURL_OR_SOUP_TRUE@ src/libostree/ostree-fetcher-util.c \ @@ -472,45 +471,45 @@ @USE_CURL_OR_SOUP_TRUE@ src/libostree/ostree-metalink.c \ @USE_CURL_OR_SOUP_TRUE@ $(NULL) -@USE_CURL_TRUE@am__append_35 = src/libostree/ostree-fetcher-curl.c \ +@USE_CURL_TRUE@am__append_34 = src/libostree/ostree-fetcher-curl.c \ @USE_CURL_TRUE@ src/libostree/ostree-soup-uri.h src/libostree/ostree-soup-uri.c \ @USE_CURL_TRUE@ src/libostree/ostree-soup-form.c \ @USE_CURL_TRUE@ $(NULL) -@USE_CURL_TRUE@am__append_36 = $(OT_DEP_CURL_CFLAGS) -@USE_CURL_TRUE@am__append_37 = $(OT_DEP_CURL_LIBS) -@USE_CURL_FALSE@@USE_LIBSOUP_TRUE@am__append_38 = src/libostree/ostree-fetcher-soup.c -@USE_CURL_FALSE@@USE_LIBSOUP_TRUE@am__append_39 = $(OT_INTERNAL_SOUP_CFLAGS) -@USE_CURL_FALSE@@USE_LIBSOUP_TRUE@am__append_40 = $(OT_INTERNAL_SOUP_LIBS) -@USE_AVAHI_TRUE@@USE_CURL_FALSE@@USE_LIBSOUP_FALSE@am__append_41 = src/libostree/ostree-soup-uri.h \ +@USE_CURL_TRUE@am__append_35 = $(OT_DEP_CURL_CFLAGS) +@USE_CURL_TRUE@am__append_36 = $(OT_DEP_CURL_LIBS) +@USE_CURL_FALSE@@USE_LIBSOUP_TRUE@am__append_37 = src/libostree/ostree-fetcher-soup.c +@USE_CURL_FALSE@@USE_LIBSOUP_TRUE@am__append_38 = $(OT_INTERNAL_SOUP_CFLAGS) +@USE_CURL_FALSE@@USE_LIBSOUP_TRUE@am__append_39 = $(OT_INTERNAL_SOUP_LIBS) +@USE_AVAHI_TRUE@@USE_CURL_FALSE@@USE_LIBSOUP_FALSE@am__append_40 = src/libostree/ostree-soup-uri.h \ @USE_AVAHI_TRUE@@USE_CURL_FALSE@@USE_LIBSOUP_FALSE@ src/libostree/ostree-soup-uri.c \ @USE_AVAHI_TRUE@@USE_CURL_FALSE@@USE_LIBSOUP_FALSE@ src/libostree/ostree-soup-form.c \ @USE_AVAHI_TRUE@@USE_CURL_FALSE@@USE_LIBSOUP_FALSE@ $(NULL) -@USE_LIBMOUNT_TRUE@am__append_42 = $(OT_DEP_LIBMOUNT_CFLAGS) -@USE_LIBMOUNT_TRUE@am__append_43 = $(OT_DEP_LIBMOUNT_LIBS) -@USE_SELINUX_TRUE@am__append_44 = $(OT_DEP_SELINUX_CFLAGS) -@USE_SELINUX_TRUE@am__append_45 = $(OT_DEP_SELINUX_LIBS) -@USE_LIBSODIUM_TRUE@am__append_46 = $(OT_DEP_LIBSODIUM_CFLAGS) -@USE_LIBSODIUM_TRUE@am__append_47 = $(OT_DEP_LIBSODIUM_LIBS) +@USE_LIBMOUNT_TRUE@am__append_41 = $(OT_DEP_LIBMOUNT_CFLAGS) +@USE_LIBMOUNT_TRUE@am__append_42 = $(OT_DEP_LIBMOUNT_LIBS) +@USE_SELINUX_TRUE@am__append_43 = $(OT_DEP_SELINUX_CFLAGS) +@USE_SELINUX_TRUE@am__append_44 = $(OT_DEP_SELINUX_LIBS) +@USE_LIBSODIUM_TRUE@am__append_45 = $(OT_DEP_LIBSODIUM_CFLAGS) +@USE_LIBSODIUM_TRUE@am__append_46 = $(OT_DEP_LIBSODIUM_LIBS) # 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_48 = -DOSTREE_ENABLE_EXPERIMENTAL_API=1 +@BUILDOPT_INTROSPECTION_TRUE@@ENABLE_EXPERIMENTAL_API_TRUE@am__append_47 = -DOSTREE_ENABLE_EXPERIMENTAL_API=1 +@BUILDOPT_INTROSPECTION_TRUE@am__append_48 = OSTree-1.0.gir @BUILDOPT_INTROSPECTION_TRUE@am__append_49 = OSTree-1.0.gir -@BUILDOPT_INTROSPECTION_TRUE@am__append_50 = OSTree-1.0.gir -@BUILDOPT_INTROSPECTION_TRUE@am__append_51 = OSTree-1.0.typelib -@BUILDOPT_INTROSPECTION_TRUE@am__append_52 = $(gir_DATA) $(typelib_DATA) -@ENABLE_EXPERIMENTAL_API_TRUE@am__append_53 = \ +@BUILDOPT_INTROSPECTION_TRUE@am__append_50 = OSTree-1.0.typelib +@BUILDOPT_INTROSPECTION_TRUE@am__append_51 = $(gir_DATA) $(typelib_DATA) +@ENABLE_EXPERIMENTAL_API_TRUE@am__append_52 = \ @ENABLE_EXPERIMENTAL_API_TRUE@ $(NULL) -@USE_GPGME_TRUE@am__append_54 = \ +@USE_GPGME_TRUE@am__append_53 = \ @USE_GPGME_TRUE@ src/ostree/ot-builtin-gpg-sign.c \ @USE_GPGME_TRUE@ $(NULL) -@USE_GPGME_TRUE@am__append_55 = \ +@USE_GPGME_TRUE@am__append_54 = \ @USE_GPGME_TRUE@ src/ostree/ot-remote-builtin-gpg-import.c \ @USE_GPGME_TRUE@ $(NULL) -@USE_CURL_OR_SOUP_TRUE@am__append_56 = src/ostree/ot-remote-builtin-add-cookie.c \ +@USE_CURL_OR_SOUP_TRUE@am__append_55 = src/ostree/ot-remote-builtin-add-cookie.c \ @USE_CURL_OR_SOUP_TRUE@ src/ostree/ot-remote-builtin-delete-cookie.c \ @USE_CURL_OR_SOUP_TRUE@ src/ostree/ot-remote-builtin-list-cookies.c \ @USE_CURL_OR_SOUP_TRUE@ src/ostree/ot-remote-cookie-util.h \ @@ -518,20 +517,20 @@ @USE_CURL_OR_SOUP_TRUE@ $(NULL) src/ostree/ot-builtin-pull.c # Eventually once we stop things from using this, we should support disabling this -@USE_LIBSOUP_TRUE@am__append_57 = src/ostree/ot-builtin-trivial-httpd.c -@USE_LIBSOUP_TRUE@am__append_58 = ostree-trivial-httpd +@USE_LIBSOUP_TRUE@am__append_56 = src/ostree/ot-builtin-trivial-httpd.c +@USE_LIBSOUP_TRUE@am__append_57 = ostree-trivial-httpd # This is necessary for the cookie jar bits -@USE_CURL_FALSE@@USE_LIBSOUP_TRUE@am__append_59 = $(OT_INTERNAL_SOUP_CFLAGS) -@USE_CURL_FALSE@@USE_LIBSOUP_TRUE@am__append_60 = $(OT_INTERNAL_SOUP_LIBS) -@USE_LIBARCHIVE_TRUE@am__append_61 = $(OT_DEP_LIBARCHIVE_CFLAGS) -@USE_LIBARCHIVE_TRUE@am__append_62 = $(OT_DEP_LIBARCHIVE_LIBS) -@USE_LIBSODIUM_TRUE@am__append_63 = $(OT_DEP_LIBSODIUM_CFLAGS) -@USE_LIBSODIUM_TRUE@am__append_64 = $(OT_DEP_LIBSODIUM_LIBS) -@BUILDOPT_SYSTEMD_TRUE@am__append_65 = ostree-remount +@USE_CURL_FALSE@@USE_LIBSOUP_TRUE@am__append_58 = $(OT_INTERNAL_SOUP_CFLAGS) +@USE_CURL_FALSE@@USE_LIBSOUP_TRUE@am__append_59 = $(OT_INTERNAL_SOUP_LIBS) +@USE_LIBARCHIVE_TRUE@am__append_60 = $(OT_DEP_LIBARCHIVE_CFLAGS) +@USE_LIBARCHIVE_TRUE@am__append_61 = $(OT_DEP_LIBARCHIVE_LIBS) +@USE_LIBSODIUM_TRUE@am__append_62 = $(OT_DEP_LIBSODIUM_CFLAGS) +@USE_LIBSODIUM_TRUE@am__append_63 = $(OT_DEP_LIBSODIUM_LIBS) +@BUILDOPT_SYSTEMD_TRUE@am__append_64 = ostree-remount # It is built anyway as a side-effect of having the symlink in tests/, # and if we declare it here, it gets cleaned up properly -@BUILDOPT_SYSTEMD_FALSE@am__append_66 = ostree-remount +@BUILDOPT_SYSTEMD_FALSE@am__append_65 = ostree-remount # ostree-prepare-root can be used as init in a system without a populated /lib. # To support this use case we need to link statically as we will be unable to @@ -543,66 +542,66 @@ # to get autotools to install this as an executable but without generating rules # to make it itself which we have specified manually. See # https://lists.gnu.org/archive/html/help-gnu-utils/2007-01/msg00007.html -@BUILDOPT_USE_STATIC_COMPILER_TRUE@am__append_67 = ostree-prepare-root -@BUILDOPT_USE_STATIC_COMPILER_FALSE@am__append_68 = ostree-prepare-root -@BUILDOPT_SYSTEMD_TRUE@am__append_69 = -DHAVE_SYSTEMD=1 +@BUILDOPT_USE_STATIC_COMPILER_TRUE@am__append_66 = ostree-prepare-root +@BUILDOPT_USE_STATIC_COMPILER_FALSE@am__append_67 = ostree-prepare-root +@BUILDOPT_SYSTEMD_TRUE@am__append_68 = -DHAVE_SYSTEMD=1 # This is the "new mode" of using a generator for /var; see # https://github.com/ostreedev/ostree/issues/855 +@BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@am__append_69 = -DHAVE_SYSTEMD_AND_LIBMOUNT=1 @BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@am__append_70 = -DHAVE_SYSTEMD_AND_LIBMOUNT=1 -@BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@am__append_71 = -DHAVE_SYSTEMD_AND_LIBMOUNT=1 @BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@systemdsystemgenerator_PROGRAMS = ostree-system-generator$(EXEEXT) -@BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@am__append_72 = $(systemdsystemgenerator_PROGRAMS) +@BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@am__append_71 = $(systemdsystemgenerator_PROGRAMS) # Allow the distcheck install under $prefix test to pass -@BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@am__append_73 = --with-systemdsystemgeneratordir='$${libdir}/systemd/system-generators' -@BUILDOPT_FUSE_TRUE@am__append_74 = rofiles-fuse -@BUILDOPT_ASAN_TRUE@am__append_75 = OT_SKIP_READDIR_RAND=1 G_SLICE=always-malloc -@USE_GPGME_TRUE@am__append_76 = \ +@BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@am__append_72 = --with-systemdsystemgeneratordir='$${libdir}/systemd/system-generators' +@BUILDOPT_FUSE_TRUE@am__append_73 = rofiles-fuse +@BUILDOPT_ASAN_TRUE@am__append_74 = OT_SKIP_READDIR_RAND=1 G_SLICE=always-malloc +@USE_GPGME_TRUE@am__append_75 = \ @USE_GPGME_TRUE@ tests/test-remote-gpg-import.sh \ @USE_GPGME_TRUE@ tests/test-gpg-signed-commit.sh \ @USE_GPGME_TRUE@ tests/test-admin-gpg.sh \ @USE_GPGME_TRUE@ $(NULL) -@ENABLE_EXPERIMENTAL_API_TRUE@am__append_77 = $(experimental_test_scripts) -@ENABLE_EXPERIMENTAL_API_FALSE@am__append_78 = $(experimental_test_scripts) -@BUILDOPT_FUSE_TRUE@am__append_79 = tests/test-rofiles-fuse.sh -@BUILDOPT_FUSE_TRUE@am__append_80 = tests/rofiles-fuse-symlink-stamp -@BUILDOPT_FUSE_FALSE@am__append_81 = tests/test-rofiles-fuse.sh -@USE_LIBSOUP_TRUE@am__append_82 = tests/test-remote-cookies.sh -@BUILDOPT_GJS_TRUE@am__append_83 = $(js_tests) $(js_installed_tests) -@BUILDOPT_GJS_FALSE@am__append_84 = $(js_tests) -@BUILDOPT_GJS_FALSE@am__append_85 = $(js_installed_tests) -@ENABLE_INSTALLED_TESTS_FALSE@am__append_86 = -rpath $(abs_builddir) -@USE_GPGME_TRUE@am__append_87 = \ +@ENABLE_EXPERIMENTAL_API_TRUE@am__append_76 = $(experimental_test_scripts) +@ENABLE_EXPERIMENTAL_API_FALSE@am__append_77 = $(experimental_test_scripts) +@BUILDOPT_FUSE_TRUE@am__append_78 = tests/test-rofiles-fuse.sh +@BUILDOPT_FUSE_TRUE@am__append_79 = tests/rofiles-fuse-symlink-stamp +@BUILDOPT_FUSE_FALSE@am__append_80 = tests/test-rofiles-fuse.sh +@USE_LIBSOUP_TRUE@am__append_81 = tests/test-remote-cookies.sh +@BUILDOPT_GJS_TRUE@am__append_82 = $(js_tests) $(js_installed_tests) +@BUILDOPT_GJS_FALSE@am__append_83 = $(js_tests) +@BUILDOPT_GJS_FALSE@am__append_84 = $(js_installed_tests) +@ENABLE_INSTALLED_TESTS_FALSE@am__append_85 = -rpath $(abs_builddir) +@USE_GPGME_TRUE@am__append_86 = \ @USE_GPGME_TRUE@ tests/test-gpg-verify-result \ @USE_GPGME_TRUE@ $(NULL) -@USE_AVAHI_TRUE@am__append_88 = tests/test-repo-finder-avahi -@USE_LIBARCHIVE_TRUE@am__append_89 = tests/test-libarchive-import -@USE_GPGME_TRUE@am__append_90 = \ +@USE_AVAHI_TRUE@am__append_87 = tests/test-repo-finder-avahi +@USE_LIBARCHIVE_TRUE@am__append_88 = tests/test-libarchive-import +@USE_GPGME_TRUE@am__append_89 = \ @USE_GPGME_TRUE@ tests/gpg-verify-data/README.md \ @USE_GPGME_TRUE@ $(NULL) -@ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@am__append_91 = $(_installed_or_uninstalled_test_scripts) -@ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@am__append_92 = $(_installed_or_uninstalled_test_programs) -@ENABLE_INSTALLED_TESTS_TRUE@am__append_93 = install-installed-tests-extra +@ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@am__append_90 = $(_installed_or_uninstalled_test_scripts) +@ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@am__append_91 = $(_installed_or_uninstalled_test_programs) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_92 = install-installed-tests-extra # Allow the distcheck install under $prefix test to pass -@BUILDOPT_SYSTEMD_TRUE@am__append_94 = --with-systemdsystemunitdir='$${libdir}/systemd/system' +@BUILDOPT_SYSTEMD_TRUE@am__append_93 = --with-systemdsystemunitdir='$${libdir}/systemd/system' # We're using the system grub2-mkconfig generator -@BUILDOPT_BUILTIN_GRUB2_MKCONFIG_FALSE@am__append_95 = src/boot/grub2/grub2-15_ostree -@BUILDOPT_BUILTIN_GRUB2_MKCONFIG_FALSE@am__append_96 = install-grub2-config-hook +@BUILDOPT_BUILTIN_GRUB2_MKCONFIG_FALSE@am__append_94 = src/boot/grub2/grub2-15_ostree +@BUILDOPT_BUILTIN_GRUB2_MKCONFIG_FALSE@am__append_95 = install-grub2-config-hook # We're using our internal generator -@BUILDOPT_BUILTIN_GRUB2_MKCONFIG_TRUE@am__append_97 = src/boot/grub2/ostree-grub-generator -@ENABLE_MAN_TRUE@@USE_LIBSOUP_TRUE@am__append_98 = ostree-trivial-httpd.1 +@BUILDOPT_BUILTIN_GRUB2_MKCONFIG_TRUE@am__append_96 = src/boot/grub2/ostree-grub-generator +@ENABLE_MAN_TRUE@@USE_LIBSOUP_TRUE@am__append_97 = ostree-trivial-httpd.1 # We still want to distribute the source, even if we are not building it -@ENABLE_MAN_TRUE@@USE_LIBSOUP_FALSE@am__append_99 = man/ostree-trivial-httpd.xml -@BUILDOPT_FUSE_TRUE@@ENABLE_MAN_TRUE@am__append_100 = rofiles-fuse.1 -@ENABLE_MAN_TRUE@@USE_GPGME_TRUE@am__append_101 = ostree-gpg-sign.1 -@ENABLE_MAN_TRUE@am__append_102 = $(man1_MANS:.1=.xml) $(man5_MANS:.5=.xml) -@ENABLE_MAN_TRUE@am__append_103 = \ +@ENABLE_MAN_TRUE@@USE_LIBSOUP_FALSE@am__append_98 = man/ostree-trivial-httpd.xml +@BUILDOPT_FUSE_TRUE@@ENABLE_MAN_TRUE@am__append_99 = rofiles-fuse.1 +@ENABLE_MAN_TRUE@@USE_GPGME_TRUE@am__append_100 = ostree-gpg-sign.1 +@ENABLE_MAN_TRUE@am__append_101 = $(man1_MANS:.1=.xml) $(man5_MANS:.5=.xml) +@ENABLE_MAN_TRUE@am__append_102 = \ @ENABLE_MAN_TRUE@ $(man1_MANS) \ @ENABLE_MAN_TRUE@ $(man5_MANS) \ @ENABLE_MAN_TRUE@ $(NULL) @@ -676,7 +675,8 @@ tests/test-basic-c$(EXEEXT) tests/test-sysroot-c$(EXEEXT) \ tests/test-pull-c$(EXEEXT) tests/test-repo$(EXEEXT) \ tests/test-include-ostree-h$(EXEEXT) tests/test-kargs$(EXEEXT) \ - $(am__EXEEXT_4) $(am__EXEEXT_5) + tests/test-rfc2616-dates$(EXEEXT) $(am__EXEEXT_4) \ + $(am__EXEEXT_5) @ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@am__EXEEXT_7 = \ @ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@ $(am__EXEEXT_6) am__EXEEXT_8 = tests/test-bloom$(EXEEXT) \ @@ -788,7 +788,8 @@ src/libostree/ostree-cmdprivate.h \ src/libostree/ostree-cmdprivate.c \ src/libostree/ostree-core-private.h \ - src/libostree/ostree-core.c \ + src/libostree/ostree-core.c src/libostree/ostree-date-utils.c \ + src/libostree/ostree-date-utils-private.h \ src/libostree/ostree-dummy-enumtypes.c \ src/libostree/ostree-checksum-input-stream.c \ src/libostree/ostree-checksum-input-stream.h \ @@ -914,6 +915,7 @@ src/libostree/libostree_1_la-ostree-async-progress.lo \ src/libostree/libostree_1_la-ostree-cmdprivate.lo \ src/libostree/libostree_1_la-ostree-core.lo \ + src/libostree/libostree_1_la-ostree-date-utils.lo \ src/libostree/libostree_1_la-ostree-dummy-enumtypes.lo \ src/libostree/libostree_1_la-ostree-checksum-input-stream.lo \ src/libostree/libostree_1_la-ostree-chain-input-stream.lo \ @@ -1457,6 +1459,15 @@ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(tests_test_repo_finder_mount_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ +am_tests_test_rfc2616_dates_OBJECTS = src/libostree/tests_test_rfc2616_dates-ostree-date-utils.$(OBJEXT) \ + tests/test_rfc2616_dates-test-rfc2616-dates.$(OBJEXT) +tests_test_rfc2616_dates_OBJECTS = \ + $(am_tests_test_rfc2616_dates_OBJECTS) +tests_test_rfc2616_dates_DEPENDENCIES = $(am__DEPENDENCIES_14) +tests_test_rfc2616_dates_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(tests_test_rfc2616_dates_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ am_tests_test_rollsum_OBJECTS = \ src/libostree/tests_test_rollsum-ostree-rollsum.$(OBJEXT) \ tests/test_rollsum-test-rollsum.$(OBJEXT) @@ -1546,6 +1557,7 @@ src/libostree/$(DEPDIR)/libostree_1_la-ostree-checksum-input-stream.Plo \ src/libostree/$(DEPDIR)/libostree_1_la-ostree-cmdprivate.Plo \ src/libostree/$(DEPDIR)/libostree_1_la-ostree-core.Plo \ + src/libostree/$(DEPDIR)/libostree_1_la-ostree-date-utils.Plo \ src/libostree/$(DEPDIR)/libostree_1_la-ostree-deployment.Plo \ src/libostree/$(DEPDIR)/libostree_1_la-ostree-diff.Plo \ src/libostree/$(DEPDIR)/libostree_1_la-ostree-dummy-enumtypes.Plo \ @@ -1610,6 +1622,7 @@ src/libostree/$(DEPDIR)/tests_test_lzma-ostree-lzma-compressor.Po \ src/libostree/$(DEPDIR)/tests_test_lzma-ostree-lzma-decompressor.Po \ src/libostree/$(DEPDIR)/tests_test_repo_finder_avahi-ostree-repo-finder-avahi-parser.Po \ + src/libostree/$(DEPDIR)/tests_test_rfc2616_dates-ostree-date-utils.Po \ src/libostree/$(DEPDIR)/tests_test_rollsum-ostree-rollsum.Po \ src/libostree/$(DEPDIR)/tests_test_rollsum_cli-ostree-rollsum.Po \ src/libostree/$(DEPDIR)/tests_test_varint-ostree-varint.Po \ @@ -1714,6 +1727,7 @@ tests/$(DEPDIR)/test_repo_finder_avahi-test-repo-finder-avahi.Po \ tests/$(DEPDIR)/test_repo_finder_config-test-repo-finder-config.Po \ tests/$(DEPDIR)/test_repo_finder_mount-test-repo-finder-mount.Po \ + tests/$(DEPDIR)/test_rfc2616_dates-test-rfc2616-dates.Po \ tests/$(DEPDIR)/test_rollsum-test-rollsum.Po \ tests/$(DEPDIR)/test_rollsum_cli-test-rollsum-cli.Po \ tests/$(DEPDIR)/test_sysroot_c-test-sysroot-c.Po \ @@ -1761,6 +1775,7 @@ tests/test-repo.c $(tests_test_repo_finder_avahi_SOURCES) \ $(tests_test_repo_finder_config_SOURCES) \ $(tests_test_repo_finder_mount_SOURCES) \ + $(tests_test_rfc2616_dates_SOURCES) \ $(tests_test_rollsum_SOURCES) \ $(tests_test_rollsum_cli_SOURCES) tests/test-sysroot-c.c \ $(tests_test_varint_SOURCES) @@ -1790,6 +1805,7 @@ $(am__tests_test_repo_finder_avahi_SOURCES_DIST) \ $(tests_test_repo_finder_config_SOURCES) \ $(tests_test_repo_finder_mount_SOURCES) \ + $(tests_test_rfc2616_dates_SOURCES) \ $(tests_test_rollsum_SOURCES) \ $(tests_test_rollsum_cli_SOURCES) tests/test-sysroot-c.c \ $(tests_test_varint_SOURCES) @@ -1842,8 +1858,8 @@ AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope check recheck distdir distdir-am dist dist-all \ distcheck -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ - $(LISP)config.h.in +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \ + config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. @@ -2039,6 +2055,7 @@ tests/test-pull-commit-only.sh tests/test-pull-depth.sh \ tests/test-pull-mirror-summary.sh \ tests/test-pull-large-metadata.sh tests/test-pull-metalink.sh \ + tests/test-pull-summary-caching.sh \ tests/test-pull-summary-sigs.sh tests/test-pull-resume.sh \ tests/test-pull-basicauth.sh tests/test-pull-repeated.sh \ tests/test-pull-sizes.sh tests/test-pull-untrusted.sh \ @@ -2081,8 +2098,8 @@ tests/test-signed-commit.sh tests/test-signed-pull.sh \ tests/test-pre-signed-pull.sh \ tests/test-signed-pull-summary.sh $(am__EXEEXT_2) \ - $(am__EXEEXT_20) $(am__EXEEXT_22) $(am__append_79) \ - $(am__append_82) $(am__EXEEXT_24) + $(am__EXEEXT_20) $(am__EXEEXT_22) $(am__append_78) \ + $(am__append_81) $(am__EXEEXT_24) @ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@am__EXEEXT_26 = \ @ENABLE_INSTALLED_TESTS_EXCLUSIVE_FALSE@ $(am__EXEEXT_25) am__EXEEXT_27 = $(am__EXEEXT_2) $(am__EXEEXT_26) @@ -2357,6 +2374,7 @@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ rustc = @rustc@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ @@ -2385,21 +2403,21 @@ # Allow the distcheck install under $prefix test to pass AM_DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-man \ - --disable-maintainer-mode $(NULL) $(am__append_73) \ - $(am__append_94) \ + --disable-maintainer-mode $(NULL) $(am__append_72) \ + $(am__append_93) \ BASH_COMPLETIONSDIR='$${datadir}/bash-completion/completions' SUBDIRS = . $(am__append_14) NULL = BUILT_SOURCES = $(nodist_libostree_1_la_SOURCES) MANPAGES = -CLEANFILES = $(am__append_13) $(BUILT_SOURCES) $(am__append_52) \ +CLEANFILES = $(am__append_13) $(BUILT_SOURCES) $(am__append_51) \ src/ostree/parse-datetime.c tests/libreaddir-rand.so \ tests/ostree-symlink-stamp \ tests/ostree-prepare-root-symlink-stamp \ tests/ostree-remount-symlink-stamp \ tests/rofiles-fuse-symlink-stamp tests/ostree \ tests/ostree-prepare-root tests/ostree-remount \ - tests/rofiles-fuse $(am__append_103) + tests/rofiles-fuse $(am__append_102) EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) autogen.sh \ COPYING README.md $(am__append_15) libglnx/README.md \ libglnx/COPYING libglnx/libglnx.m4 $(NULL) \ @@ -2415,9 +2433,9 @@ src/libostree/ostree-repo-deprecated.h \ src/libostree/ostree-version.h src/ostree/parse-datetime.y \ buildutil/tap-driver.sh buildutil/tap-test tests/glib.supp \ - tests/ostree.supp $(NULL) $(am__append_78) $(am__append_81) \ - $(am__append_84) tests/libtest.sh $(am__append_85) \ - $(am__append_90) tests/libostreetest.h tests/libtest.sh \ + tests/ostree.supp $(NULL) $(am__append_77) $(am__append_80) \ + $(am__append_83) tests/libtest.sh $(am__append_84) \ + $(am__append_89) tests/libostreetest.h tests/libtest.sh \ $(NULL) src/boot/dracut/module-setup.sh \ src/boot/dracut/ostree.conf src/boot/mkinitcpio/ostree \ src/boot/ostree-prepare-root.service \ @@ -2425,25 +2443,25 @@ src/boot/ostree-remount.service \ src/boot/ostree-finalize-staged.service \ src/boot/grub2/grub2-15_ostree \ - src/boot/grub2/ostree-grub-generator $(NULL) $(am__append_99) \ - $(am__append_102) + src/boot/grub2/ostree-grub-generator $(NULL) $(am__append_98) \ + $(am__append_101) bin_SCRIPTS = lib_LTLIBRARIES = libostree-1.la -pkglibexec_SCRIPTS = $(am__append_95) +pkglibexec_SCRIPTS = $(am__append_94) noinst_LTLIBRARIES = $(am__append_1) libglnx.la libbsdiff.la \ libotutil.la $(am__append_18) libostreetest.la privlibdir = $(pkglibdir) privlib_LTLIBRARIES = pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = src/libostree/ostree-1.pc -INTROSPECTION_GIRS = $(am__append_49) +INTROSPECTION_GIRS = $(am__append_48) girdir = $(datadir)/gir-1.0 -gir_DATA = $(am__append_50) +gir_DATA = $(am__append_49) typelibdir = $(libdir)/girepository-1.0 -typelib_DATA = $(am__append_51) +typelib_DATA = $(am__append_50) gsettings_SCHEMAS = ostree_bootdir = $(prefix)/lib/ostree -ostree_boot_SCRIPTS = $(am__append_67) $(am__append_97) +ostree_boot_SCRIPTS = $(am__append_66) $(am__append_96) # We should probably consider flipping the default for DEBUG. Also, # include the builddir in $PATH so we find our just-built ostree @@ -2460,7 +2478,7 @@ pwd)$${LD_LIBRARY_PATH:+:$${LD_LIBRARY_PATH}} PATH=$$(cd \ $(top_builddir)/tests && pwd):$${PATH} \ OSTREE_FEATURES="$(OSTREE_FEATURES)" PYTHONUNBUFFERED=1 \ - $(NULL) $(am__append_75) + $(NULL) $(am__append_74) LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/buildutil/tap-driver.sh LOG_COMPILER = $(top_srcdir)/buildutil/tap-test installed_test_LTLIBRARIES = $(am__append_12) @@ -2500,8 +2518,8 @@ # This initializes some more variables # This is a special facility to chain together hooks easily -INSTALL_DATA_HOOKS = install-mkdir-remotes-d-hook $(am__append_93) \ - $(am__append_96) +INSTALL_DATA_HOOKS = install-mkdir-remotes-d-hook $(am__append_92) \ + $(am__append_95) ALL_LOCAL_RULES = tests/libreaddir-rand.so shortened_sysconfdir = $$(echo "$(sysconfdir)" | sed -e 's|^$(prefix)||' -e 's|^/||') OSTREE_GITREV = $(shell cd $(srcdir) && if command -v git >/dev/null 2>&1 && test -d .git; then git describe --abbrev=42 --tags --always HEAD; fi) @@ -2509,7 +2527,7 @@ # Generated by coreos-assembler build-fast and kola GITIGNOREFILES = aclocal.m4 build-aux/ buildutil/*.m4 config.h.in \ - gtk-doc.make fastbuild-*.qcow2 _kola_temp/ $(am__append_72) + gtk-doc.make fastbuild-*.qcow2 _kola_temp/ $(am__append_71) OT_INTERNAL_GIO_UNIX_CFLAGS = $(OT_DEP_GIO_UNIX_CFLAGS) OT_INTERNAL_GIO_UNIX_LIBS = $(OT_DEP_GIO_UNIX_LIBS) OT_INTERNAL_SOUP_CFLAGS = $(OT_DEP_SOUP_CFLAGS) @@ -2651,7 +2669,8 @@ src/libostree/ostree-cmdprivate.h \ src/libostree/ostree-cmdprivate.c \ src/libostree/ostree-core-private.h \ - src/libostree/ostree-core.c \ + src/libostree/ostree-core.c src/libostree/ostree-date-utils.c \ + src/libostree/ostree-date-utils-private.h \ src/libostree/ostree-dummy-enumtypes.c \ src/libostree/ostree-checksum-input-stream.c \ src/libostree/ostree-checksum-input-stream.h \ @@ -2721,8 +2740,8 @@ src/libostree/ostree-kernel-args.c $(NULL) $(am__append_19) \ $(am__append_20) $(am__append_21) $(am__append_22) \ $(am__append_23) $(am__append_24) $(am__append_25) \ - $(am__append_34) $(am__append_35) $(am__append_38) \ - $(am__append_41) src/libostree/ostree-sign.c \ + $(am__append_33) $(am__append_34) $(am__append_37) \ + $(am__append_40) src/libostree/ostree-sign.c \ src/libostree/ostree-sign.h src/libostree/ostree-sign-dummy.c \ src/libostree/ostree-sign-dummy.h \ src/libostree/ostree-sign-ed25519.c \ @@ -2730,8 +2749,12 @@ libostree_experimental_headers = \ $(NULL) -symbol_files = $(top_srcdir)/src/libostree/libostree-released.sym \ - $(am__append_26) +symbol_files = $(top_srcdir)/src/libostree/libostree-released.sym + +#if BUILDOPT_IS_DEVEL_BUILD +#symbol_files += $(top_srcdir)/src/libostree/libostree-devel.sym +#endif + # http://blog.jgc.org/2007/06/escaping-comma-and-space-in-gnu-make.html wl_versionscript_arg = -Wl,--version-script= libostree_1_la_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/bsdiff \ @@ -2741,17 +2764,17 @@ $(OT_DEP_LZMA_CFLAGS) $(OT_DEP_ZLIB_CFLAGS) \ $(OT_DEP_CRYPTO_CFLAGS) -fvisibility=hidden \ '-D_OSTREE_PUBLIC=__attribute__((visibility("default"))) \ - extern' $(am__append_28) $(am__append_30) $(am__append_32) \ - $(am__append_36) $(am__append_39) $(am__append_42) \ - $(am__append_44) $(am__append_46) + extern' $(am__append_27) $(am__append_29) $(am__append_31) \ + $(am__append_35) $(am__append_38) $(am__append_41) \ + $(am__append_43) $(am__append_45) libostree_1_la_LDFLAGS = -version-number 1:0:0 -Bsymbolic-functions $(addprefix $(wl_versionscript_arg),$(symbol_files)) libostree_1_la_LIBADD = libotutil.la libglnx.la libbsdiff.la \ $(OT_INTERNAL_GIO_UNIX_LIBS) $(OT_INTERNAL_GPGME_LIBS) \ $(OT_DEP_LZMA_LIBS) $(OT_DEP_ZLIB_LIBS) $(OT_DEP_CRYPTO_LIBS) \ - $(am__append_27) $(bupsplitpath) $(am__append_29) \ - $(am__append_31) $(am__append_33) $(am__append_37) \ - $(am__append_40) $(am__append_43) $(am__append_45) \ - $(am__append_47) + $(am__append_26) $(bupsplitpath) $(am__append_28) \ + $(am__append_30) $(am__append_32) $(am__append_36) \ + $(am__append_39) $(am__append_42) $(am__append_44) \ + $(am__append_46) EXTRA_libostree_1_la_DEPENDENCIES = $(symbol_files) # XXX: work around clang being passed -fstack-clash-protection which it doesn't understand @@ -2761,7 +2784,7 @@ @BUILDOPT_INTROSPECTION_TRUE@OSTree_1_0_gir_INCLUDES = Gio-2.0 @BUILDOPT_INTROSPECTION_TRUE@OSTree_1_0_gir_CFLAGS = \ @BUILDOPT_INTROSPECTION_TRUE@ $(libostree_1_la_CFLAGS) \ -@BUILDOPT_INTROSPECTION_TRUE@ $(am__append_48) +@BUILDOPT_INTROSPECTION_TRUE@ $(am__append_47) @BUILDOPT_INTROSPECTION_TRUE@OSTree_1_0_gir_LIBS = libostree-1.la @BUILDOPT_INTROSPECTION_TRUE@OSTree_1_0_gir_SCANNERFLAGS = --warn-all --identifier-prefix=Ostree --symbol-prefix=ostree $(GI_SCANNERFLAGS) @BUILDOPT_INTROSPECTION_TRUE@OSTree_1_0_gir_FILES = $(libostreeinclude_HEADERS) $(filter-out %-private.h %/ostree-soup-uri.h $(libostree_experimental_headers),$(libostree_1_la_SOURCES)) @@ -2790,8 +2813,8 @@ src/ostree/ot-builtin-static-delta.c src/ostree/ot-main.h \ src/ostree/ot-main.c src/ostree/ot-dump.h src/ostree/ot-dump.c \ src/ostree/ot-editor.c src/ostree/ot-editor.h \ - src/ostree/parse-datetime.h $(NULL) $(am__append_53) \ - $(am__append_54) src/ostree/ot-admin-builtin-init-fs.c \ + src/ostree/parse-datetime.h $(NULL) $(am__append_52) \ + $(am__append_53) src/ostree/ot-admin-builtin-init-fs.c \ src/ostree/ot-admin-builtin-diff.c \ src/ostree/ot-admin-builtin-deploy.c \ src/ostree/ot-admin-builtin-finalize-staged.c \ @@ -2819,7 +2842,7 @@ src/ostree/ot-remote-builtin-show-url.c \ src/ostree/ot-remote-builtin-refs.c \ src/ostree/ot-remote-builtin-summary.c $(NULL) \ - $(am__append_55) $(am__append_56) $(am__append_57) + $(am__append_54) $(am__append_55) $(am__append_56) nodist_ostree_SOURCES = \ src/ostree/parse-datetime.c \ $(NULL) @@ -2831,11 +2854,11 @@ ostree_bin_shared_ldadd = $(AM_LDFLAGS) libglnx.la libotutil.la libostree-1.la \ $(OT_INTERNAL_GIO_UNIX_LIBS) -ostree_CFLAGS = $(ostree_bin_shared_cflags) $(am__append_59) \ - $(am__append_61) $(am__append_63) +ostree_CFLAGS = $(ostree_bin_shared_cflags) $(am__append_58) \ + $(am__append_60) $(am__append_62) ostree_LDADD = $(ostree_bin_shared_ldadd) libbsdiff.la \ - $(LIBSYSTEMD_LIBS) $(am__append_60) $(am__append_62) \ - $(am__append_64) + $(LIBSYSTEMD_LIBS) $(am__append_59) $(am__append_61) \ + $(am__append_63) @USE_LIBSOUP_TRUE@ostree_trivial_httpd_SOURCES = src/ostree/ostree-trivial-httpd.c @USE_LIBSOUP_TRUE@ostree_trivial_httpd_CFLAGS = $(ostree_bin_shared_cflags) $(OT_INTERNAL_SOUP_CFLAGS) @USE_LIBSOUP_TRUE@ostree_trivial_httpd_LDADD = $(ostree_bin_shared_ldadd) $(OT_INTERNAL_SOUP_LIBS) @@ -2844,8 +2867,8 @@ src/switchroot/ostree-prepare-root.c \ $(NULL) -ostree_prepare_root_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_69) \ - $(am__append_70) +ostree_prepare_root_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_68) \ + $(am__append_69) @BUILDOPT_USE_STATIC_COMPILER_FALSE@ostree_prepare_root_CFLAGS = $(AM_CFLAGS) -Isrc/switchroot ostree_remount_SOURCES = \ src/switchroot/ostree-mount-util.h \ @@ -2854,7 +2877,7 @@ ostree_remount_CPPFLAGS = $(AM_CPPFLAGS) \ $(OT_INTERNAL_GIO_UNIX_CFLAGS) -Isrc/switchroot \ - -I$(srcdir)/libglnx $(am__append_71) + -I$(srcdir)/libglnx $(am__append_70) ostree_remount_LDADD = $(AM_LDFLAGS) $(OT_INTERNAL_GIO_UNIX_LIBS) libglnx.la @BUILDOPT_SYSTEMD_TRUE@ostree_prepare_root_LDADD = $(AM_LDFLAGS) $(LIBSYSTEMD_LIBS) @BUILDOPT_SYSTEMD_AND_LIBMOUNT_TRUE@ostree_system_generator_SOURCES = src/switchroot/ostree-mount-util.h \ @@ -2871,7 +2894,7 @@ @BUILDOPT_FUSE_TRUE@rofiles_fuse_LDADD = libglnx.la $(BUILDOPT_FUSE_LIBS) $(OT_INTERNAL_GIO_UNIX_LIBS) libostree-1.la uninstalled_test_data = tests/ostree-symlink-stamp \ tests/ostree-prepare-root-symlink-stamp \ - tests/ostree-remount-symlink-stamp $(am__append_80) + tests/ostree-remount-symlink-stamp $(am__append_79) dist_uninstalled_test_scripts = tests/test-symbols.sh tests/coccinelle.sh # This logic implements ENABLE_INSTALLED_TESTS_EXCLUSIVE; see below. @@ -2879,10 +2902,10 @@ # tests *only* run installed, to avoid having to run them twice in CI. # This overrides the glib-tap.mk emphasis on doing both, if we'd # used e.g. `dist_test_scripts`. -dist_test_scripts = $(NULL) $(am__append_91) +dist_test_scripts = $(NULL) $(am__append_90) test_programs = tests/test-bloom tests/test-repo-finder-config \ - tests/test-repo-finder-mount $(NULL) $(am__append_88) \ - $(am__append_92) + tests/test-repo-finder-mount $(NULL) $(am__append_87) \ + $(am__append_91) _installed_or_uninstalled_test_scripts = tests/test-basic.sh \ tests/test-basic-user.sh tests/test-basic-user-only.sh \ tests/test-basic-root.sh tests/test-pull-subpath.sh \ @@ -2896,6 +2919,7 @@ tests/test-pull-commit-only.sh tests/test-pull-depth.sh \ tests/test-pull-mirror-summary.sh \ tests/test-pull-large-metadata.sh tests/test-pull-metalink.sh \ + tests/test-pull-summary-caching.sh \ tests/test-pull-summary-sigs.sh tests/test-pull-resume.sh \ tests/test-pull-basicauth.sh tests/test-pull-repeated.sh \ tests/test-pull-sizes.sh tests/test-pull-untrusted.sh \ @@ -2937,9 +2961,9 @@ tests/test-pull-collections.sh tests/test-config.sh \ tests/test-signed-commit.sh tests/test-signed-pull.sh \ tests/test-pre-signed-pull.sh \ - tests/test-signed-pull-summary.sh $(NULL) $(am__append_76) \ - $(am__append_77) $(am__append_79) $(am__append_82) \ - $(am__append_83) + tests/test-signed-pull-summary.sh $(NULL) $(am__append_75) \ + $(am__append_76) $(am__append_78) $(am__append_81) \ + $(am__append_82) experimental_test_scripts = \ $(NULL) @@ -3018,7 +3042,7 @@ $(NULL) libreaddir_rand_la_LDFLAGS = $(AM_LDFLAGS) -avoid-version \ - $(am__append_86) + $(am__append_85) _installed_or_uninstalled_test_programs = tests/test-varint \ tests/test-ot-unix-utils tests/test-bsdiff \ tests/test-mutable-tree tests/test-keyfile-utils \ @@ -3026,7 +3050,7 @@ tests/test-checksum tests/test-lzma tests/test-rollsum \ tests/test-basic-c tests/test-sysroot-c tests/test-pull-c \ tests/test-repo tests/test-include-ostree-h tests/test-kargs \ - $(am__append_87) $(am__append_89) + tests/test-rfc2616-dates $(am__append_86) $(am__append_88) common_tests_cflags = $(ostree_bin_shared_cflags) $(OT_INTERNAL_GIO_UNIX_CFLAGS) -I$(srcdir)/libglnx common_tests_ldadd = $(ostree_bin_shared_ldadd) $(OT_INTERNAL_GIO_UNIX_LIBS) libostreetest_la_SOURCES = tests/libostreetest.c tests/test-mock-gio.c tests/test-mock-gio.h @@ -3099,6 +3123,12 @@ tests_test_lzma_CFLAGS = $(TESTS_CFLAGS) $(OT_DEP_LZMA_CFLAGS) tests_test_lzma_LDADD = $(TESTS_LDADD) $(OT_DEP_LZMA_LIBS) +tests_test_rfc2616_dates_SOURCES = \ + src/libostree/ostree-date-utils.c \ + tests/test-rfc2616-dates.c + +tests_test_rfc2616_dates_CFLAGS = $(TESTS_CFLAGS) +tests_test_rfc2616_dates_LDADD = $(TESTS_LDADD) @USE_GPGME_TRUE@tests_test_gpg_verify_result_SOURCES = \ @USE_GPGME_TRUE@ src/libostree/ostree-gpg-verify-result-private.h \ @USE_GPGME_TRUE@ tests/test-gpg-verify-result.c @@ -3147,8 +3177,8 @@ @ENABLE_MAN_TRUE@ ostree-pull.1 ostree-refs.1 ostree-remote.1 \ @ENABLE_MAN_TRUE@ ostree-reset.1 ostree-rev-parse.1 \ @ENABLE_MAN_TRUE@ ostree-show.1 ostree-sign.1 ostree-summary.1 \ -@ENABLE_MAN_TRUE@ ostree-static-delta.1 $(am__append_98) \ -@ENABLE_MAN_TRUE@ $(am__append_100) $(am__append_101) +@ENABLE_MAN_TRUE@ ostree-static-delta.1 $(am__append_97) \ +@ENABLE_MAN_TRUE@ $(am__append_99) $(am__append_100) @ENABLE_MAN_TRUE@man5_files = ostree.repo.5 ostree.repo-config.5 @ENABLE_MAN_TRUE@man1_MANS = $(addprefix man/,$(man1_files)) @ENABLE_MAN_TRUE@man5_MANS = $(addprefix man/,$(man5_files)) @@ -3772,6 +3802,9 @@ src/libostree/libostree_1_la-ostree-core.lo: \ src/libostree/$(am__dirstamp) \ src/libostree/$(DEPDIR)/$(am__dirstamp) +src/libostree/libostree_1_la-ostree-date-utils.lo: \ + src/libostree/$(am__dirstamp) \ + src/libostree/$(DEPDIR)/$(am__dirstamp) src/libostree/libostree_1_la-ostree-dummy-enumtypes.lo: \ src/libostree/$(am__dirstamp) \ src/libostree/$(DEPDIR)/$(am__dirstamp) @@ -4471,6 +4504,15 @@ tests/test-repo-finder-mount$(EXEEXT): $(tests_test_repo_finder_mount_OBJECTS) $(tests_test_repo_finder_mount_DEPENDENCIES) $(EXTRA_tests_test_repo_finder_mount_DEPENDENCIES) tests/$(am__dirstamp) @rm -f tests/test-repo-finder-mount$(EXEEXT) $(AM_V_CCLD)$(tests_test_repo_finder_mount_LINK) $(tests_test_repo_finder_mount_OBJECTS) $(tests_test_repo_finder_mount_LDADD) $(LIBS) +src/libostree/tests_test_rfc2616_dates-ostree-date-utils.$(OBJEXT): \ + src/libostree/$(am__dirstamp) \ + src/libostree/$(DEPDIR)/$(am__dirstamp) +tests/test_rfc2616_dates-test-rfc2616-dates.$(OBJEXT): \ + tests/$(am__dirstamp) tests/$(DEPDIR)/$(am__dirstamp) + +tests/test-rfc2616-dates$(EXEEXT): $(tests_test_rfc2616_dates_OBJECTS) $(tests_test_rfc2616_dates_DEPENDENCIES) $(EXTRA_tests_test_rfc2616_dates_DEPENDENCIES) tests/$(am__dirstamp) + @rm -f tests/test-rfc2616-dates$(EXEEXT) + $(AM_V_CCLD)$(tests_test_rfc2616_dates_LINK) $(tests_test_rfc2616_dates_OBJECTS) $(tests_test_rfc2616_dates_LDADD) $(LIBS) src/libostree/tests_test_rollsum-ostree-rollsum.$(OBJEXT): \ src/libostree/$(am__dirstamp) \ src/libostree/$(DEPDIR)/$(am__dirstamp) @@ -4769,6 +4811,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/libostree_1_la-ostree-checksum-input-stream.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/libostree_1_la-ostree-cmdprivate.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/libostree_1_la-ostree-core.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/libostree_1_la-ostree-date-utils.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/libostree_1_la-ostree-deployment.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/libostree_1_la-ostree-diff.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/libostree_1_la-ostree-dummy-enumtypes.Plo@am__quote@ # am--include-marker @@ -4833,6 +4876,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/tests_test_lzma-ostree-lzma-compressor.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/tests_test_lzma-ostree-lzma-decompressor.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/tests_test_repo_finder_avahi-ostree-repo-finder-avahi-parser.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/tests_test_rfc2616_dates-ostree-date-utils.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/tests_test_rollsum-ostree-rollsum.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/tests_test_rollsum_cli-ostree-rollsum.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/tests_test_varint-ostree-varint.Po@am__quote@ # am--include-marker @@ -4937,6 +4981,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/test_repo_finder_avahi-test-repo-finder-avahi.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/test_repo_finder_config-test-repo-finder-config.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/test_repo_finder_mount-test-repo-finder-mount.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/test_rfc2616_dates-test-rfc2616-dates.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/test_rollsum-test-rollsum.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/test_rollsum_cli-test-rollsum-cli.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/$(DEPDIR)/test_sysroot_c-test-sysroot-c.Po@am__quote@ # am--include-marker @@ -5070,6 +5115,13 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libostree_1_la_CFLAGS) $(CFLAGS) -c -o src/libostree/libostree_1_la-ostree-core.lo `test -f 'src/libostree/ostree-core.c' || echo '$(srcdir)/'`src/libostree/ostree-core.c +src/libostree/libostree_1_la-ostree-date-utils.lo: src/libostree/ostree-date-utils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libostree_1_la_CFLAGS) $(CFLAGS) -MT src/libostree/libostree_1_la-ostree-date-utils.lo -MD -MP -MF src/libostree/$(DEPDIR)/libostree_1_la-ostree-date-utils.Tpo -c -o src/libostree/libostree_1_la-ostree-date-utils.lo `test -f 'src/libostree/ostree-date-utils.c' || echo '$(srcdir)/'`src/libostree/ostree-date-utils.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/libostree/$(DEPDIR)/libostree_1_la-ostree-date-utils.Tpo src/libostree/$(DEPDIR)/libostree_1_la-ostree-date-utils.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/libostree/ostree-date-utils.c' object='src/libostree/libostree_1_la-ostree-date-utils.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libostree_1_la_CFLAGS) $(CFLAGS) -c -o src/libostree/libostree_1_la-ostree-date-utils.lo `test -f 'src/libostree/ostree-date-utils.c' || echo '$(srcdir)/'`src/libostree/ostree-date-utils.c + src/libostree/libostree_1_la-ostree-dummy-enumtypes.lo: src/libostree/ostree-dummy-enumtypes.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libostree_1_la_CFLAGS) $(CFLAGS) -MT src/libostree/libostree_1_la-ostree-dummy-enumtypes.lo -MD -MP -MF src/libostree/$(DEPDIR)/libostree_1_la-ostree-dummy-enumtypes.Tpo -c -o src/libostree/libostree_1_la-ostree-dummy-enumtypes.lo `test -f 'src/libostree/ostree-dummy-enumtypes.c' || echo '$(srcdir)/'`src/libostree/ostree-dummy-enumtypes.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/libostree/$(DEPDIR)/libostree_1_la-ostree-dummy-enumtypes.Tpo src/libostree/$(DEPDIR)/libostree_1_la-ostree-dummy-enumtypes.Plo @@ -7093,6 +7145,34 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_repo_finder_mount_CFLAGS) $(CFLAGS) -c -o tests/test_repo_finder_mount-test-repo-finder-mount.obj `if test -f 'tests/test-repo-finder-mount.c'; then $(CYGPATH_W) 'tests/test-repo-finder-mount.c'; else $(CYGPATH_W) '$(srcdir)/tests/test-repo-finder-mount.c'; fi` +src/libostree/tests_test_rfc2616_dates-ostree-date-utils.o: src/libostree/ostree-date-utils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_rfc2616_dates_CFLAGS) $(CFLAGS) -MT src/libostree/tests_test_rfc2616_dates-ostree-date-utils.o -MD -MP -MF src/libostree/$(DEPDIR)/tests_test_rfc2616_dates-ostree-date-utils.Tpo -c -o src/libostree/tests_test_rfc2616_dates-ostree-date-utils.o `test -f 'src/libostree/ostree-date-utils.c' || echo '$(srcdir)/'`src/libostree/ostree-date-utils.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/libostree/$(DEPDIR)/tests_test_rfc2616_dates-ostree-date-utils.Tpo src/libostree/$(DEPDIR)/tests_test_rfc2616_dates-ostree-date-utils.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/libostree/ostree-date-utils.c' object='src/libostree/tests_test_rfc2616_dates-ostree-date-utils.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_rfc2616_dates_CFLAGS) $(CFLAGS) -c -o src/libostree/tests_test_rfc2616_dates-ostree-date-utils.o `test -f 'src/libostree/ostree-date-utils.c' || echo '$(srcdir)/'`src/libostree/ostree-date-utils.c + +src/libostree/tests_test_rfc2616_dates-ostree-date-utils.obj: src/libostree/ostree-date-utils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_rfc2616_dates_CFLAGS) $(CFLAGS) -MT src/libostree/tests_test_rfc2616_dates-ostree-date-utils.obj -MD -MP -MF src/libostree/$(DEPDIR)/tests_test_rfc2616_dates-ostree-date-utils.Tpo -c -o src/libostree/tests_test_rfc2616_dates-ostree-date-utils.obj `if test -f 'src/libostree/ostree-date-utils.c'; then $(CYGPATH_W) 'src/libostree/ostree-date-utils.c'; else $(CYGPATH_W) '$(srcdir)/src/libostree/ostree-date-utils.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/libostree/$(DEPDIR)/tests_test_rfc2616_dates-ostree-date-utils.Tpo src/libostree/$(DEPDIR)/tests_test_rfc2616_dates-ostree-date-utils.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/libostree/ostree-date-utils.c' object='src/libostree/tests_test_rfc2616_dates-ostree-date-utils.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_rfc2616_dates_CFLAGS) $(CFLAGS) -c -o src/libostree/tests_test_rfc2616_dates-ostree-date-utils.obj `if test -f 'src/libostree/ostree-date-utils.c'; then $(CYGPATH_W) 'src/libostree/ostree-date-utils.c'; else $(CYGPATH_W) '$(srcdir)/src/libostree/ostree-date-utils.c'; fi` + +tests/test_rfc2616_dates-test-rfc2616-dates.o: tests/test-rfc2616-dates.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_rfc2616_dates_CFLAGS) $(CFLAGS) -MT tests/test_rfc2616_dates-test-rfc2616-dates.o -MD -MP -MF tests/$(DEPDIR)/test_rfc2616_dates-test-rfc2616-dates.Tpo -c -o tests/test_rfc2616_dates-test-rfc2616-dates.o `test -f 'tests/test-rfc2616-dates.c' || echo '$(srcdir)/'`tests/test-rfc2616-dates.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tests/$(DEPDIR)/test_rfc2616_dates-test-rfc2616-dates.Tpo tests/$(DEPDIR)/test_rfc2616_dates-test-rfc2616-dates.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/test-rfc2616-dates.c' object='tests/test_rfc2616_dates-test-rfc2616-dates.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_rfc2616_dates_CFLAGS) $(CFLAGS) -c -o tests/test_rfc2616_dates-test-rfc2616-dates.o `test -f 'tests/test-rfc2616-dates.c' || echo '$(srcdir)/'`tests/test-rfc2616-dates.c + +tests/test_rfc2616_dates-test-rfc2616-dates.obj: tests/test-rfc2616-dates.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_rfc2616_dates_CFLAGS) $(CFLAGS) -MT tests/test_rfc2616_dates-test-rfc2616-dates.obj -MD -MP -MF tests/$(DEPDIR)/test_rfc2616_dates-test-rfc2616-dates.Tpo -c -o tests/test_rfc2616_dates-test-rfc2616-dates.obj `if test -f 'tests/test-rfc2616-dates.c'; then $(CYGPATH_W) 'tests/test-rfc2616-dates.c'; else $(CYGPATH_W) '$(srcdir)/tests/test-rfc2616-dates.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tests/$(DEPDIR)/test_rfc2616_dates-test-rfc2616-dates.Tpo tests/$(DEPDIR)/test_rfc2616_dates-test-rfc2616-dates.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/test-rfc2616-dates.c' object='tests/test_rfc2616_dates-test-rfc2616-dates.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_rfc2616_dates_CFLAGS) $(CFLAGS) -c -o tests/test_rfc2616_dates-test-rfc2616-dates.obj `if test -f 'tests/test-rfc2616-dates.c'; then $(CYGPATH_W) 'tests/test-rfc2616-dates.c'; else $(CYGPATH_W) '$(srcdir)/tests/test-rfc2616-dates.c'; fi` + src/libostree/tests_test_rollsum-ostree-rollsum.o: src/libostree/ostree-rollsum.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tests_test_rollsum_CFLAGS) $(CFLAGS) -MT src/libostree/tests_test_rollsum-ostree-rollsum.o -MD -MP -MF src/libostree/$(DEPDIR)/tests_test_rollsum-ostree-rollsum.Tpo -c -o src/libostree/tests_test_rollsum-ostree-rollsum.o `test -f 'src/libostree/ostree-rollsum.c' || echo '$(srcdir)/'`src/libostree/ostree-rollsum.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/libostree/$(DEPDIR)/tests_test_rollsum-ostree-rollsum.Tpo src/libostree/$(DEPDIR)/tests_test_rollsum-ostree-rollsum.Po @@ -8034,6 +8114,13 @@ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +tests/test-rfc2616-dates.log: tests/test-rfc2616-dates$(EXEEXT) + @p='tests/test-rfc2616-dates$(EXEEXT)'; \ + b='tests/test-rfc2616-dates'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) tests/test-gpg-verify-result.log: tests/test-gpg-verify-result$(EXEEXT) @p='tests/test-gpg-verify-result$(EXEEXT)'; \ b='tests/test-gpg-verify-result'; \ @@ -8202,6 +8289,13 @@ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +tests/test-pull-summary-caching.sh.log: tests/test-pull-summary-caching.sh + @p='tests/test-pull-summary-caching.sh'; \ + b='tests/test-pull-summary-caching.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) tests/test-pull-summary-sigs.sh.log: tests/test-pull-summary-sigs.sh @p='tests/test-pull-summary-sigs.sh'; \ b='tests/test-pull-summary-sigs.sh'; \ @@ -8870,6 +8964,10 @@ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) +dist-zstd: distdir + tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst + $(am__post_remove_distdir) + dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @@ -8912,6 +9010,8 @@ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ + *.tar.zst*) \ + zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) @@ -9096,6 +9196,7 @@ -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-checksum-input-stream.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-cmdprivate.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-core.Plo + -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-date-utils.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-deployment.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-diff.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-dummy-enumtypes.Plo @@ -9160,6 +9261,7 @@ -rm -f src/libostree/$(DEPDIR)/tests_test_lzma-ostree-lzma-compressor.Po -rm -f src/libostree/$(DEPDIR)/tests_test_lzma-ostree-lzma-decompressor.Po -rm -f src/libostree/$(DEPDIR)/tests_test_repo_finder_avahi-ostree-repo-finder-avahi-parser.Po + -rm -f src/libostree/$(DEPDIR)/tests_test_rfc2616_dates-ostree-date-utils.Po -rm -f src/libostree/$(DEPDIR)/tests_test_rollsum-ostree-rollsum.Po -rm -f src/libostree/$(DEPDIR)/tests_test_rollsum_cli-ostree-rollsum.Po -rm -f src/libostree/$(DEPDIR)/tests_test_varint-ostree-varint.Po @@ -9264,6 +9366,7 @@ -rm -f tests/$(DEPDIR)/test_repo_finder_avahi-test-repo-finder-avahi.Po -rm -f tests/$(DEPDIR)/test_repo_finder_config-test-repo-finder-config.Po -rm -f tests/$(DEPDIR)/test_repo_finder_mount-test-repo-finder-mount.Po + -rm -f tests/$(DEPDIR)/test_rfc2616_dates-test-rfc2616-dates.Po -rm -f tests/$(DEPDIR)/test_rollsum-test-rollsum.Po -rm -f tests/$(DEPDIR)/test_rollsum_cli-test-rollsum-cli.Po -rm -f tests/$(DEPDIR)/test_sysroot_c-test-sysroot-c.Po @@ -9369,6 +9472,7 @@ -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-checksum-input-stream.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-cmdprivate.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-core.Plo + -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-date-utils.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-deployment.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-diff.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-dummy-enumtypes.Plo @@ -9433,6 +9537,7 @@ -rm -f src/libostree/$(DEPDIR)/tests_test_lzma-ostree-lzma-compressor.Po -rm -f src/libostree/$(DEPDIR)/tests_test_lzma-ostree-lzma-decompressor.Po -rm -f src/libostree/$(DEPDIR)/tests_test_repo_finder_avahi-ostree-repo-finder-avahi-parser.Po + -rm -f src/libostree/$(DEPDIR)/tests_test_rfc2616_dates-ostree-date-utils.Po -rm -f src/libostree/$(DEPDIR)/tests_test_rollsum-ostree-rollsum.Po -rm -f src/libostree/$(DEPDIR)/tests_test_rollsum_cli-ostree-rollsum.Po -rm -f src/libostree/$(DEPDIR)/tests_test_varint-ostree-varint.Po @@ -9537,6 +9642,7 @@ -rm -f tests/$(DEPDIR)/test_repo_finder_avahi-test-repo-finder-avahi.Po -rm -f tests/$(DEPDIR)/test_repo_finder_config-test-repo-finder-config.Po -rm -f tests/$(DEPDIR)/test_repo_finder_mount-test-repo-finder-mount.Po + -rm -f tests/$(DEPDIR)/test_rfc2616_dates-test-rfc2616-dates.Po -rm -f tests/$(DEPDIR)/test_rollsum-test-rollsum.Po -rm -f tests/$(DEPDIR)/test_rollsum_cli-test-rollsum-cli.Po -rm -f tests/$(DEPDIR)/test_sysroot_c-test-sysroot-c.Po @@ -9596,13 +9702,14 @@ clean-privlibLTLIBRARIES clean-sbinPROGRAMS \ clean-systemdsystemgeneratorPROGRAMS cscope cscopelist-am \ ctags ctags-am dist dist-all dist-bzip2 dist-gzip dist-hook \ - dist-lzip dist-shar dist-tarZ dist-xz dist-zip distcheck \ - distclean distclean-compile distclean-generic distclean-hdr \ - distclean-libtool distclean-tags distcleancheck distdir \ - distuninstallcheck dvi dvi-am html html-am info info-am \ - install install-am install-binPROGRAMS install-binSCRIPTS \ - install-data install-data-am install-data-hook \ - install-dist_completionsDATA install-dist_gpginsttestDATA \ + dist-lzip dist-shar dist-tarZ dist-xz dist-zip dist-zstd \ + distcheck distclean distclean-compile distclean-generic \ + distclean-hdr distclean-libtool distclean-tags distcleancheck \ + distdir distuninstallcheck dvi dvi-am html html-am info \ + info-am install install-am install-binPROGRAMS \ + install-binSCRIPTS install-data install-data-am \ + install-data-hook install-dist_completionsDATA \ + install-dist_gpginsttestDATA \ install-dist_gpginsttest_revocDATA \ install-dist_gpginsttest_trustedDATA \ install-dist_gpgvinsttestDATA install-dist_systemdtmpfilesDATA \ diff -Nru ostree-2020.7/Makefile-libostree.am ostree-2020.8/Makefile-libostree.am --- ostree-2020.7/Makefile-libostree.am 2020-10-14 00:05:41.000000000 +0000 +++ ostree-2020.8/Makefile-libostree.am 2020-11-17 15:24:24.000000000 +0000 @@ -68,6 +68,8 @@ src/libostree/ostree-cmdprivate.c \ src/libostree/ostree-core-private.h \ src/libostree/ostree-core.c \ + src/libostree/ostree-date-utils.c \ + src/libostree/ostree-date-utils-private.h \ src/libostree/ostree-dummy-enumtypes.c \ src/libostree/ostree-checksum-input-stream.c \ src/libostree/ostree-checksum-input-stream.h \ @@ -182,9 +184,12 @@ endif # USE_GPGME symbol_files = $(top_srcdir)/src/libostree/libostree-released.sym -if BUILDOPT_IS_DEVEL_BUILD -symbol_files += $(top_srcdir)/src/libostree/libostree-devel.sym -endif + +## Uncomment this include when adding new development symbols. +#if BUILDOPT_IS_DEVEL_BUILD +#symbol_files += $(top_srcdir)/src/libostree/libostree-devel.sym +#endif + # http://blog.jgc.org/2007/06/escaping-comma-and-space-in-gnu-make.html wl_versionscript_arg = -Wl,--version-script= EXTRA_DIST += \ diff -Nru ostree-2020.7/Makefile-tests.am ostree-2020.8/Makefile-tests.am --- ostree-2020.7/Makefile-tests.am 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/Makefile-tests.am 2020-10-27 09:14:08.000000000 +0000 @@ -82,6 +82,7 @@ tests/test-pull-mirror-summary.sh \ tests/test-pull-large-metadata.sh \ tests/test-pull-metalink.sh \ + tests/test-pull-summary-caching.sh \ tests/test-pull-summary-sigs.sh \ tests/test-pull-resume.sh \ tests/test-pull-basicauth.sh \ @@ -272,7 +273,8 @@ _installed_or_uninstalled_test_programs = tests/test-varint tests/test-ot-unix-utils tests/test-bsdiff tests/test-mutable-tree \ tests/test-keyfile-utils tests/test-ot-opt-utils tests/test-ot-tool-util \ tests/test-checksum tests/test-lzma tests/test-rollsum \ - tests/test-basic-c tests/test-sysroot-c tests/test-pull-c tests/test-repo tests/test-include-ostree-h tests/test-kargs + tests/test-basic-c tests/test-sysroot-c tests/test-pull-c tests/test-repo tests/test-include-ostree-h tests/test-kargs \ + tests/test-rfc2616-dates if USE_GPGME _installed_or_uninstalled_test_programs += \ @@ -389,6 +391,12 @@ tests_test_lzma_CFLAGS = $(TESTS_CFLAGS) $(OT_DEP_LZMA_CFLAGS) tests_test_lzma_LDADD = $(TESTS_LDADD) $(OT_DEP_LZMA_LIBS) +tests_test_rfc2616_dates_SOURCES = \ + src/libostree/ostree-date-utils.c \ + tests/test-rfc2616-dates.c +tests_test_rfc2616_dates_CFLAGS = $(TESTS_CFLAGS) +tests_test_rfc2616_dates_LDADD = $(TESTS_LDADD) + if USE_GPGME tests_test_gpg_verify_result_SOURCES = \ src/libostree/ostree-gpg-verify-result-private.h \ diff -Nru ostree-2020.7/man/ostree.repo-config.xml ostree-2020.8/man/ostree.repo-config.xml --- ostree-2020.7/man/ostree.repo-config.xml 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/man/ostree.repo-config.xml 2020-11-03 12:17:16.000000000 +0000 @@ -249,6 +249,20 @@ costly). + + + no-deltas-in-summary + Boolean value controlling whether OSTree should skip + putting an index of available deltas in the summary file. Defaults to false. + + + Since 2020.7 OSTree can use delta indexes outside the summary file, + making the summary file smaller (especially for larger repositories). However + by default we still create the index in the summary file to make older clients + work. If you know all clients will be 2020.7 later you can enable this to + save network bandwidth. + + @@ -359,7 +373,9 @@ bootloader Configure the bootloader that OSTree uses when deploying the sysroot. This may take the values - bootloader=none or bootloader=auto. + bootloader=none, bootloader=auto, + bootloader=grub2, bootloader=syslinux, + bootloader=uboot or bootloader=zipl. Default is auto. @@ -374,6 +390,11 @@ then OSTree will generate a config for the bootloader found. For example, grub2-mkconfig is run for the grub2 case. + + A specific bootloader type may also be explicitly requested by choosing + grub2, syslinux, uboot or + zipl. + diff -Nru ostree-2020.7/src/libostree/libostree-devel.sym ostree-2020.8/src/libostree/libostree-devel.sym --- ostree-2020.7/src/libostree/libostree-devel.sym 2020-10-14 00:05:41.000000000 +0000 +++ ostree-2020.8/src/libostree/libostree-devel.sym 2020-11-17 15:24:24.000000000 +0000 @@ -15,7 +15,12 @@ License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -***/ + + How to introduce the first new symbol for a development version: + - copy the stub content below to a new entry + - replace templated value as noted + - uncomment the include in Makefile-libostree.am +*/ /* Stub section for the stable release *after* this development one; don't * edit this other than to update the year. This is just a copy/paste diff -Nru ostree-2020.7/src/libostree/libostree-released.sym ostree-2020.8/src/libostree/libostree-released.sym --- ostree-2020.7/src/libostree/libostree-released.sym 2020-10-14 00:04:02.000000000 +0000 +++ ostree-2020.8/src/libostree/libostree-released.sym 2020-11-17 15:24:24.000000000 +0000 @@ -596,7 +596,6 @@ /* No new symbols in 2020.2 */ /* No new symbols in 2020.3 */ -/* Add new symbols here. Release commits should copy this section into -released.sym. */ LIBOSTREE_2020.4 { global: ostree_repo_commit_modifier_set_sepolicy_from_commit; @@ -619,14 +618,10 @@ } LIBOSTREE_2020.1; /* No new symbols in 2020.5 */ - /* No new symbols in 2020.6 */ LIBOSTREE_2020.7 { global: - /* Add symbols here, and uncomment the bits in - * Makefile-libostree.am to enable this too. - */ ostree_repo_static_delta_execute_offline_with_signature; ostree_repo_static_delta_verify_signature; ostree_bootconfig_parser_get_overlay_initrds; @@ -636,6 +631,13 @@ ostree_sysroot_stage_overlay_initrd; } LIBOSTREE_2020.4; +LIBOSTREE_2020.8 { +global: + ostree_repo_list_static_delta_indexes; + ostree_repo_static_delta_reindex; + ostree_repo_gpg_sign_data; +} LIBOSTREE_2020.7; + /* NOTE: Only add more content here in release commits! See the * comments at the top of this file. */ diff -Nru ostree-2020.7/src/libostree/ostree-core.c ostree-2020.8/src/libostree/ostree-core.c --- ostree-2020.7/src/libostree/ostree-core.c 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-core.c 2020-10-27 09:14:08.000000000 +0000 @@ -1814,15 +1814,15 @@ return g_string_free (path, FALSE); } -char * -_ostree_get_relative_static_delta_path (const char *from, - const char *to, - const char *target) +static GString * +static_delta_path_base (const char *dir, + const char *from, + const char *to) { guint8 csum_to[OSTREE_SHA256_DIGEST_LEN]; char to_b64[44]; guint8 csum_to_copy[OSTREE_SHA256_DIGEST_LEN]; - GString *ret = g_string_new ("deltas/"); + GString *ret = g_string_new (dir); ostree_checksum_inplace_to_bytes (to, csum_to); ostree_checksum_b64_inplace_from_bytes (csum_to, to_b64); @@ -1851,6 +1851,16 @@ g_string_append_c (ret, '/'); g_string_append (ret, to_b64 + 2); + return ret; +} + +char * +_ostree_get_relative_static_delta_path (const char *from, + const char *to, + const char *target) +{ + GString *ret = static_delta_path_base ("deltas/", from, to); + if (target != NULL) { g_string_append_c (ret, '/'); @@ -1883,6 +1893,16 @@ return _ostree_get_relative_static_delta_path (from, to, partstr); } +char * +_ostree_get_relative_static_delta_index_path (const char *to) +{ + GString *ret = static_delta_path_base ("delta-indexes/", NULL, to); + + g_string_append (ret, ".index"); + + return g_string_free (ret, FALSE); +} + gboolean _ostree_parse_delta_name (const char *delta_name, char **out_from, diff -Nru ostree-2020.7/src/libostree/ostree-core-private.h ostree-2020.8/src/libostree/ostree-core-private.h --- ostree-2020.7/src/libostree/ostree-core-private.h 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-core-private.h 2020-10-27 09:14:08.000000000 +0000 @@ -135,6 +135,9 @@ const char *to, guint i); +char * +_ostree_get_relative_static_delta_index_path (const char *to); + static inline char * _ostree_get_commitpartial_path (const char *checksum) { return g_strconcat ("state/", checksum, ".commitpartial", NULL); diff -Nru ostree-2020.7/src/libostree/ostree-date-utils.c ostree-2020.8/src/libostree/ostree-date-utils.c --- ostree-2020.7/src/libostree/ostree-date-utils.c 1970-01-01 00:00:00.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-date-utils.c 2020-10-27 09:14:08.000000000 +0000 @@ -0,0 +1,166 @@ +/* + * Copyright © 2020 Endless OS Foundation LLC + * + * SPDX-License-Identifier: LGPL-2.0+ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Authors: + * - Philip Withnall + */ + +#include "config.h" + +#include +#include +#include + +#include "ostree-date-utils-private.h" + +/* @buf must already be known to be long enough */ +static gboolean +parse_uint (const char *buf, + guint n_digits, + guint min, + guint max, + guint *out) +{ + guint64 number; + const char *end_ptr = NULL; + gint saved_errno = 0; + + g_return_val_if_fail (n_digits == 2 || n_digits == 4, FALSE); + g_return_val_if_fail (out != NULL, FALSE); + + errno = 0; + number = g_ascii_strtoull (buf, (gchar **)&end_ptr, 10); + saved_errno = errno; + + if (!g_ascii_isdigit (buf[0]) || + saved_errno != 0 || + end_ptr == NULL || + end_ptr != buf + n_digits || + number < min || + number > max) + return FALSE; + + *out = number; + return TRUE; +} + +/* Locale-independent parsing for RFC 2616 date/times. + * + * Reference: https://tools.ietf.org/html/rfc2616#section-3.3.1 + * + * Syntax: + * , :: GMT + * + * Note that this only accepts the full-year and GMT formats specified by + * RFC 1123. It doesn’t accept RFC 850 or asctime formats. + * + * Example: + * Wed, 21 Oct 2015 07:28:00 GMT + */ +GDateTime * +_ostree_parse_rfc2616_date_time (const char *buf, + size_t len) +{ + guint day_int, year_int, hour_int, minute_int, second_int; + const char *day_names[] = + { + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat", + "Sun", + }; + size_t day_name_index; + const char *month_names[] = + { + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + }; + size_t month_name_index; + + if (len != 29) + return NULL; + + const char *day_name = buf; + const char *day = buf + 5; + const char *month_name = day + 3; + const char *year = month_name + 4; + const char *hour = year + 5; + const char *minute = hour + 3; + const char *second = minute + 3; + const char *tz = second + 3; + + for (day_name_index = 0; day_name_index < G_N_ELEMENTS (day_names); day_name_index++) + { + if (strncmp (day_names[day_name_index], day_name, 3) == 0) + break; + } + if (day_name_index >= G_N_ELEMENTS (day_names)) + return NULL; + /* don’t validate whether the day_name matches the rest of the date */ + if (*(day_name + 3) != ',' || *(day_name + 4) != ' ') + return NULL; + if (!parse_uint (day, 2, 1, 31, &day_int)) + return NULL; + if (*(day + 2) != ' ') + return NULL; + for (month_name_index = 0; month_name_index < G_N_ELEMENTS (month_names); month_name_index++) + { + if (strncmp (month_names[month_name_index], month_name, 3) == 0) + break; + } + if (month_name_index >= G_N_ELEMENTS (month_names)) + return NULL; + if (*(month_name + 3) != ' ') + return NULL; + if (!parse_uint (year, 4, 0, 9999, &year_int)) + return NULL; + if (*(year + 4) != ' ') + return NULL; + if (!parse_uint (hour, 2, 0, 23, &hour_int)) + return NULL; + if (*(hour + 2) != ':') + return NULL; + if (!parse_uint (minute, 2, 0, 59, &minute_int)) + return NULL; + if (*(minute + 2) != ':') + return NULL; + if (!parse_uint (second, 2, 0, 60, &second_int)) /* allow leap seconds */ + return NULL; + if (*(second + 2) != ' ') + return NULL; + if (strncmp (tz, "GMT", 3) != 0) + return NULL; + + return g_date_time_new_utc (year_int, month_name_index + 1, day_int, + hour_int, minute_int, second_int); +} diff -Nru ostree-2020.7/src/libostree/ostree-date-utils-private.h ostree-2020.8/src/libostree/ostree-date-utils-private.h --- ostree-2020.7/src/libostree/ostree-date-utils-private.h 1970-01-01 00:00:00.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-date-utils-private.h 2020-10-27 09:14:08.000000000 +0000 @@ -0,0 +1,38 @@ +/* + * Copyright © 2020 Endless OS Foundation LLC + * + * SPDX-License-Identifier: LGPL-2.0+ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Authors: + * - Philip Withnall + */ + +#pragma once + +#ifndef __GI_SCANNER__ + +#include + +G_BEGIN_DECLS + +GDateTime *_ostree_parse_rfc2616_date_time (const char *buf, + size_t len); + +G_END_DECLS + +#endif diff -Nru ostree-2020.7/src/libostree/ostree-deployment.c ostree-2020.8/src/libostree/ostree-deployment.c --- ostree-2020.7/src/libostree/ostree-deployment.c 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-deployment.c 2020-11-16 10:25:18.000000000 +0000 @@ -27,12 +27,24 @@ G_DEFINE_TYPE (OstreeDeployment, ostree_deployment, G_TYPE_OBJECT) +/* + * ostree_deployment_get_csum: + * @self: Deployment + * + * Returns: (not nullable): The OSTree commit used for this deployment. + */ const char * ostree_deployment_get_csum (OstreeDeployment *self) { return self->csum; } +/* + * ostree_deployment_get_bootcsum: + * @self: Deployment + * + * Returns: (not nullable): The "boot checksum" for content installed in `/boot/ostree`. + */ const char * ostree_deployment_get_bootcsum (OstreeDeployment *self) { @@ -41,9 +53,9 @@ /* * ostree_deployment_get_osname: - * @self: Deployemnt + * @self: Deployment * - * Returns: The "stateroot" name, also known as an "osname" + * Returns: (not nullable): The "stateroot" name, also known as an "osname" */ const char * ostree_deployment_get_osname (OstreeDeployment *self) @@ -51,12 +63,24 @@ return self->osname; } +/* + * ostree_deployment_get_deployserial: + * @self: Deployment + * + * Returns: An integer counter used to ensure multiple deployments of a commit are unique + */ int ostree_deployment_get_deployserial (OstreeDeployment *self) { return self->deployserial; } +/* + * ostree_deployment_get_bootserial: + * @self: Deployment + * + * Returns: An integer counter to index from shared kernels into deployments + */ int ostree_deployment_get_bootserial (OstreeDeployment *self) { @@ -87,24 +111,51 @@ return self->origin; } +/** + * ostree_deployment_get_index: + * @self: Deployment + * + * Returns: The global index into the bootloader ordering + */ int ostree_deployment_get_index (OstreeDeployment *self) { return self->index; } +/** + * ostree_deployment_set_index: + * @self: Deployment + * @index: Index into bootloader ordering + * + * Sets the global index into the bootloader ordering. + */ void ostree_deployment_set_index (OstreeDeployment *self, int index) { self->index = index; } +/** + * ostree_deployment_set_bootserial: + * @self: Deployment + * @index: Don't use this + * + * Should never have been made public API; don't use this. + */ void ostree_deployment_set_bootserial (OstreeDeployment *self, int index) { self->bootserial = index; } +/** + * ostree_deployment_set_bootconfig: + * @self: Deployment + * @bootconfig: (nullable): Bootloader configuration object + * + * Set or clear the bootloader configuration. + */ void ostree_deployment_set_bootconfig (OstreeDeployment *self, OstreeBootconfigParser *bootconfig) { @@ -113,6 +164,14 @@ self->bootconfig = g_object_ref (bootconfig); } +/** + * ostree_deployment_set_origin: + * @self: Deployment + * @origin: (nullable): Set the origin for this deployment + * + * Replace the "origin", which is a description of the source + * of the deployment and how to update to the next version. + */ void ostree_deployment_set_origin (OstreeDeployment *self, GKeyFile *origin) { @@ -190,7 +249,7 @@ * ostree_deployment_clone: * @self: Deployment * - * Returns: (transfer full): New deep copy of @self + * Returns: (not nullable) (transfer full): New deep copy of @self */ OstreeDeployment * ostree_deployment_clone (OstreeDeployment *self) @@ -224,6 +283,12 @@ return ret; } +/** + * ostree_deployment_hash: + * @v: (type OstreeDeployment): Deployment + * + * Returns: An integer suitable for use in a `GHashTable` + */ guint ostree_deployment_hash (gconstpointer v) { @@ -287,6 +352,17 @@ object_class->finalize = ostree_deployment_finalize; } +/** + * ostree_deployment_new: + * @index: Global index into the bootloader entries + * @osname: "stateroot" for this deployment + * @csum: OSTree commit that will be deployed + * @deployserial: Unique counter + * @bootcsum: (nullable): Kernel/initrd checksum + * @bootserial: Unique index + * + * Returns: (transfer full) (not nullable): New deployment + */ OstreeDeployment * ostree_deployment_new (int index, const char *osname, @@ -323,7 +399,7 @@ * access, it, you must either use fd-relative api such as openat(), * or concatenate it with the full ostree_sysroot_get_path(). * - * Returns: (transfer full): Path to deployment root directory, relative to sysroot + * Returns: (not nullable) (transfer full): Path to deployment root directory, relative to sysroot */ char * ostree_deployment_get_origin_relpath (OstreeDeployment *self) @@ -337,6 +413,7 @@ /** * ostree_deployment_unlocked_state_to_string: * + * Returns: (not nullable): Description of state * Since: 2016.4 */ const char * diff -Nru ostree-2020.7/src/libostree/ostree-diff.h ostree-2020.8/src/libostree/ostree-diff.h --- ostree-2020.7/src/libostree/ostree-diff.h 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-diff.h 2020-11-10 11:34:43.000000000 +0000 @@ -42,7 +42,7 @@ typedef struct _OstreeDiffItem OstreeDiffItem; struct _OstreeDiffItem { - volatile gint refcount; + gint refcount; /* atomic */ GFile *src; GFile *target; diff -Nru ostree-2020.7/src/libostree/ostree-enumtypes.c.template ostree-2020.8/src/libostree/ostree-enumtypes.c.template --- ostree-2020.7/src/libostree/ostree-enumtypes.c.template 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-enumtypes.c.template 2020-11-10 11:34:43.000000000 +0000 @@ -36,9 +36,9 @@ GType _@enum_name@_get_type (void) { - static volatile gsize the_type__volatile = 0; + static gsize static_the_type = 0; - if (g_once_init_enter (&the_type__volatile)) + if (g_once_init_enter (&static_the_type)) { static const G@Type@Value values[] = { /*** END value-header ***/ @@ -57,10 +57,10 @@ g_intern_static_string ("@EnumName@"), values); - g_once_init_leave (&the_type__volatile, the_type); + g_once_init_leave (&static_the_type, the_type); } - return the_type__volatile; + return static_the_type; } /*** END value-tail ***/ diff -Nru ostree-2020.7/src/libostree/ostree-fetcher-curl.c ostree-2020.8/src/libostree/ostree-fetcher-curl.c --- ostree-2020.7/src/libostree/ostree-fetcher-curl.c 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-fetcher-curl.c 2020-11-03 12:17:16.000000000 +0000 @@ -45,6 +45,7 @@ #define CURLPIPE_MULTIPLEX 0 #endif +#include "ostree-date-utils-private.h" #include "ostree-fetcher.h" #include "ostree-fetcher-util.h" #include "ostree-enumtypes.h" @@ -99,10 +100,16 @@ guint64 current_size; guint64 max_size; OstreeFetcherRequestFlags flags; + struct curl_slist *req_headers; + char *if_none_match; /* request ETag */ + guint64 if_modified_since; /* seconds since the epoch */ gboolean is_membuf; GError *caught_write_error; GLnxTmpfile tmpf; GString *output_buf; + gboolean out_not_modified; /* TRUE if the server gave a HTTP 304 Not Modified response, which we don’t propagate as an error */ + char *out_etag; /* response ETag */ + guint64 out_last_modified; /* response Last-Modified, seconds since the epoch */ CURL *easy; char error[CURL_ERROR_SIZE]; @@ -335,7 +342,17 @@ else { curl_easy_getinfo (easy, CURLINFO_RESPONSE_CODE, &response); - if (!is_file && !(response >= 200 && response < 300)) + + if (!is_file && response == 304 && + (req->if_none_match != NULL || req->if_modified_since > 0)) + { + /* Version on the server is unchanged from the version we have + * cached locally; report this as an out-argument, a zero-length + * response buffer, and no error. */ + req->out_not_modified = TRUE; + } + + if (!is_file && !(response >= 200 && response < 300) && response != 304) { GIOErrorEnum giocode = _ostree_fetcher_http_status_code_to_io_error (response); @@ -409,14 +426,11 @@ timer_cb (gpointer data) { OstreeFetcher *fetcher = data; - GSource *orig_src = fetcher->timer_event; - + g_clear_pointer (&fetcher->timer_event, (GDestroyNotify)destroy_and_unref_source); (void)curl_multi_socket_action (fetcher->multi, CURL_SOCKET_TIMEOUT, 0, &fetcher->curl_running); check_multi_info (fetcher); - if (fetcher->timer_event == orig_src) - fetcher->timer_event = NULL; - return FALSE; + return G_SOURCE_REMOVE; } /* Update the event timer after curl_multi library calls */ @@ -575,6 +589,40 @@ return realsize; } +/* CURLOPT_HEADERFUNCTION */ +static size_t +response_header_cb (const char *buffer, size_t size, size_t n_items, void *user_data) +{ + const size_t real_size = size * n_items; + GTask *task = G_TASK (user_data); + FetcherRequest *req; + + /* libcurl says that @size is always 1, but let’s check + * See https://curl.haxx.se/libcurl/c/CURLOPT_HEADERFUNCTION.html */ + g_assert (size == 1); + + req = g_task_get_task_data (task); + + const char *etag_header = "ETag: "; + const char *last_modified_header = "Last-Modified: "; + + if (real_size > strlen (etag_header) && + strncasecmp (buffer, etag_header, strlen (etag_header)) == 0) + { + g_clear_pointer (&req->out_etag, g_free); + req->out_etag = g_strstrip (g_strdup (buffer + strlen (etag_header))); + } + else if (real_size > strlen (last_modified_header) && + strncasecmp (buffer, last_modified_header, strlen (last_modified_header)) == 0) + { + g_autofree char *lm_buf = g_strstrip (g_strdup (buffer + strlen (last_modified_header))); + g_autoptr(GDateTime) dt = _ostree_parse_rfc2616_date_time (lm_buf, strlen (lm_buf)); + req->out_last_modified = (dt != NULL) ? g_date_time_to_unix (dt) : 0; + } + + return real_size; +} + /* CURLOPT_PROGRESSFUNCTION */ static int prog_cb (void *p, double dltotal, double dlnow, double ult, double uln) @@ -600,6 +648,9 @@ glnx_tmpfile_clear (&req->tmpf); if (req->output_buf) g_string_free (req->output_buf, TRUE); + g_free (req->if_none_match); + g_free (req->out_etag); + g_clear_pointer (&req->req_headers, (GDestroyNotify)curl_slist_free_all); curl_easy_cleanup (req->easy); g_free (req); @@ -721,8 +772,29 @@ curl_easy_setopt (req->easy, CURLOPT_USERAGENT, self->custom_user_agent ?: OSTREE_FETCHER_USERAGENT_STRING); - if (self->extra_headers) - curl_easy_setopt (req->easy, CURLOPT_HTTPHEADER, self->extra_headers); + + /* Set caching request headers */ + if (req->if_none_match != NULL) + { + g_autofree char *if_none_match = g_strconcat ("If-None-Match: ", req->if_none_match, NULL); + req->req_headers = curl_slist_append (req->req_headers, if_none_match); + } + + if (req->if_modified_since > 0) + { + g_autoptr(GDateTime) date_time = g_date_time_new_from_unix_utc (req->if_modified_since); + g_autofree char *mod_date = g_date_time_format (date_time, "If-Modified-Since: %a, %d %b %Y %H:%M:%S %Z"); + + req->req_headers = curl_slist_append (req->req_headers, mod_date); + } + + /* Append a copy of @extra_headers to @req_headers, as the former could change + * between requests or while a request is in flight */ + for (const struct curl_slist *l = self->extra_headers; l != NULL; l = l->next) + req->req_headers = curl_slist_append (req->req_headers, l->data); + + if (req->req_headers != NULL) + curl_easy_setopt (req->easy, CURLOPT_HTTPHEADER, req->req_headers); if (self->cookie_jar_path) { @@ -796,6 +868,7 @@ } curl_easy_setopt (req->easy, CURLOPT_WRITEFUNCTION, write_cb); + curl_easy_setopt (req->easy, CURLOPT_HEADERFUNCTION, response_header_cb); if (g_getenv ("OSTREE_DEBUG_HTTP")) curl_easy_setopt (req->easy, CURLOPT_VERBOSE, 1L); curl_easy_setopt (req->easy, CURLOPT_ERRORBUFFER, req->error); @@ -815,6 +888,7 @@ /* closure bindings -> task */ curl_easy_setopt (req->easy, CURLOPT_PRIVATE, task); curl_easy_setopt (req->easy, CURLOPT_WRITEDATA, task); + curl_easy_setopt (req->easy, CURLOPT_HEADERDATA, task); curl_easy_setopt (req->easy, CURLOPT_PROGRESSDATA, task); CURLMcode multi_rc = curl_multi_add_handle (self->multi, req->easy); @@ -826,6 +900,8 @@ GPtrArray *mirrorlist, const char *filename, OstreeFetcherRequestFlags flags, + const char *if_none_match, + guint64 if_modified_since, gboolean is_membuf, guint64 max_size, int priority, @@ -859,6 +935,8 @@ req->filename = g_strdup (filename); req->max_size = max_size; req->flags = flags; + req->if_none_match = g_strdup (if_none_match); + req->if_modified_since = if_modified_since; req->is_membuf = is_membuf; /* We'll allocate the tmpfile on demand, so we handle * file I/O errors just in the write func. @@ -882,13 +960,16 @@ GPtrArray *mirrorlist, const char *filename, OstreeFetcherRequestFlags flags, + const char *if_none_match, + guint64 if_modified_since, guint64 max_size, int priority, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { - _ostree_fetcher_request_async (self, mirrorlist, filename, flags, FALSE, + _ostree_fetcher_request_async (self, mirrorlist, filename, flags, + if_none_match, if_modified_since, FALSE, max_size, priority, cancellable, callback, user_data); } @@ -897,6 +978,9 @@ _ostree_fetcher_request_to_tmpfile_finish (OstreeFetcher *self, GAsyncResult *result, GLnxTmpfile *out_tmpf, + gboolean *out_not_modified, + char **out_etag, + guint64 *out_last_modified, GError **error) { g_return_val_if_fail (g_task_is_valid (result, self), FALSE); @@ -912,6 +996,13 @@ *out_tmpf = req->tmpf; req->tmpf.initialized = FALSE; /* Transfer ownership */ + if (out_not_modified != NULL) + *out_not_modified = req->out_not_modified; + if (out_etag != NULL) + *out_etag = g_steal_pointer (&req->out_etag); + if (out_last_modified != NULL) + *out_last_modified = req->out_last_modified; + return TRUE; } @@ -920,13 +1011,16 @@ GPtrArray *mirrorlist, const char *filename, OstreeFetcherRequestFlags flags, + const char *if_none_match, + guint64 if_modified_since, guint64 max_size, int priority, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { - _ostree_fetcher_request_async (self, mirrorlist, filename, flags, TRUE, + _ostree_fetcher_request_async (self, mirrorlist, filename, flags, + if_none_match, if_modified_since, TRUE, max_size, priority, cancellable, callback, user_data); } @@ -935,6 +1029,9 @@ _ostree_fetcher_request_to_membuf_finish (OstreeFetcher *self, GAsyncResult *result, GBytes **out_buf, + gboolean *out_not_modified, + char **out_etag, + guint64 *out_last_modified, GError **error) { GTask *task; @@ -955,6 +1052,13 @@ g_assert (out_buf); *out_buf = ret; + if (out_not_modified != NULL) + *out_not_modified = req->out_not_modified; + if (out_etag != NULL) + *out_etag = g_steal_pointer (&req->out_etag); + if (out_last_modified != NULL) + *out_last_modified = req->out_last_modified; + return TRUE; } diff -Nru ostree-2020.7/src/libostree/ostree-fetcher.h ostree-2020.8/src/libostree/ostree-fetcher.h --- ostree-2020.7/src/libostree/ostree-fetcher.h 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-fetcher.h 2020-10-27 09:14:08.000000000 +0000 @@ -123,6 +123,8 @@ GPtrArray *mirrorlist, const char *filename, OstreeFetcherRequestFlags flags, + const char *if_none_match, + guint64 if_modified_since, guint64 max_size, int priority, GCancellable *cancellable, @@ -132,12 +134,17 @@ gboolean _ostree_fetcher_request_to_tmpfile_finish (OstreeFetcher *self, GAsyncResult *result, GLnxTmpfile *out_tmpf, + gboolean *out_not_modified, + char **out_etag, + guint64 *out_last_modified, GError **error); void _ostree_fetcher_request_to_membuf (OstreeFetcher *self, GPtrArray *mirrorlist, const char *filename, OstreeFetcherRequestFlags flags, + const char *if_none_match, + guint64 if_modified_since, guint64 max_size, int priority, GCancellable *cancellable, @@ -147,6 +154,9 @@ gboolean _ostree_fetcher_request_to_membuf_finish (OstreeFetcher *self, GAsyncResult *result, GBytes **out_buf, + gboolean *out_not_modified, + char **out_etag, + guint64 *out_last_modified, GError **error); diff -Nru ostree-2020.7/src/libostree/ostree-fetcher-soup.c ostree-2020.8/src/libostree/ostree-fetcher-soup.c --- ostree-2020.7/src/libostree/ostree-fetcher-soup.c 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-fetcher-soup.c 2020-11-10 11:34:43.000000000 +0000 @@ -49,7 +49,7 @@ } OstreeFetcherState; typedef struct { - volatile int ref_count; + int ref_count; /* atomic */ SoupSession *session; /* not referenced */ GMainContext *main_context; @@ -77,7 +77,7 @@ } ThreadClosure; typedef struct { - volatile int ref_count; + int ref_count; /* atomic */ ThreadClosure *thread_closure; GPtrArray *mirrorlist; /* list of base URIs */ @@ -90,9 +90,14 @@ gboolean is_membuf; OstreeFetcherRequestFlags flags; + char *if_none_match; /* request ETag */ + guint64 if_modified_since; /* seconds since the epoch */ GInputStream *request_body; GLnxTmpfile tmpf; GOutputStream *out_stream; + gboolean out_not_modified; /* TRUE if the server gave a HTTP 304 Not Modified response, which we don’t propagate as an error */ + char *out_etag; /* response ETag */ + guint64 out_last_modified; /* response Last-Modified, seconds since the epoch */ guint64 max_size; guint64 current_size; @@ -196,8 +201,10 @@ g_free (pending->filename); g_clear_object (&pending->request); g_clear_object (&pending->request_body); + g_free (pending->if_none_match); glnx_tmpfile_clear (&pending->tmpf); g_clear_object (&pending->out_stream); + g_free (pending->out_etag); g_free (pending); } @@ -431,6 +438,22 @@ pending->request = soup_session_request_uri (pending->thread_closure->session, (SoupURI*)(uri ? uri : next_mirror), error); + + /* Add caching headers. */ + if (SOUP_IS_REQUEST_HTTP (pending->request) && pending->if_none_match != NULL) + { + glnx_unref_object SoupMessage *msg = soup_request_http_get_message ((SoupRequestHTTP*) pending->request); + soup_message_headers_append (msg->request_headers, "If-None-Match", pending->if_none_match); + } + + if (SOUP_IS_REQUEST_HTTP (pending->request) && pending->if_modified_since > 0) + { + glnx_unref_object SoupMessage *msg = soup_request_http_get_message ((SoupRequestHTTP*) pending->request); + + g_autoptr(GDateTime) date_time = g_date_time_new_from_unix_utc (pending->if_modified_since); + g_autofree char *mod_date = g_date_time_format (date_time, "%a, %d %b %Y %H:%M:%S %Z"); + soup_message_headers_append (msg->request_headers, "If-Modified-Since", mod_date); + } } static void @@ -1050,7 +1073,14 @@ if (SOUP_IS_REQUEST_HTTP (object)) { msg = soup_request_http_get_message ((SoupRequestHTTP*) object); - if (!SOUP_STATUS_IS_SUCCESSFUL (msg->status_code)) + if (msg->status_code == SOUP_STATUS_NOT_MODIFIED && + (pending->if_none_match != NULL || pending->if_modified_since > 0)) + { + /* Version on the server is unchanged from the version we have cached locally; + * report this as an out-argument, a zero-length response buffer, and no error */ + pending->out_not_modified = TRUE; + } + else if (!SOUP_STATUS_IS_SUCCESSFUL (msg->status_code)) { /* is there another mirror we can try? */ if (pending->mirrorlist_idx + 1 < pending->mirrorlist->len) @@ -1124,6 +1154,21 @@ } goto out; } + + /* Grab cache properties from the response */ + pending->out_etag = g_strdup (soup_message_headers_get_one (msg->response_headers, "ETag")); + pending->out_last_modified = 0; + + const char *last_modified_str = soup_message_headers_get_one (msg->response_headers, "Last-Modified"); + if (last_modified_str != NULL) + { + SoupDate *soup_date = soup_date_new_from_string (last_modified_str); + if (soup_date != NULL) + { + pending->out_last_modified = soup_date_to_time_t (soup_date); + soup_date_free (soup_date); + } + } } pending->state = OSTREE_FETCHER_STATE_DOWNLOADING; @@ -1154,6 +1199,8 @@ GPtrArray *mirrorlist, const char *filename, OstreeFetcherRequestFlags flags, + const char *if_none_match, + guint64 if_modified_since, gboolean is_membuf, guint64 max_size, int priority, @@ -1175,6 +1222,8 @@ pending->mirrorlist = g_ptr_array_ref (mirrorlist); pending->filename = g_strdup (filename); pending->flags = flags; + pending->if_none_match = g_strdup (if_none_match); + pending->if_modified_since = if_modified_since; pending->max_size = max_size; pending->is_membuf = is_membuf; @@ -1196,13 +1245,16 @@ GPtrArray *mirrorlist, const char *filename, OstreeFetcherRequestFlags flags, + const char *if_none_match, + guint64 if_modified_since, guint64 max_size, int priority, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { - _ostree_fetcher_request_async (self, mirrorlist, filename, flags, FALSE, + _ostree_fetcher_request_async (self, mirrorlist, filename, flags, + if_none_match, if_modified_since, FALSE, max_size, priority, cancellable, callback, user_data); } @@ -1211,6 +1263,9 @@ _ostree_fetcher_request_to_tmpfile_finish (OstreeFetcher *self, GAsyncResult *result, GLnxTmpfile *out_tmpf, + gboolean *out_not_modified, + char **out_etag, + guint64 *out_last_modified, GError **error) { GTask *task; @@ -1231,6 +1286,13 @@ *out_tmpf = pending->tmpf; pending->tmpf.initialized = FALSE; /* Transfer ownership */ + if (out_not_modified != NULL) + *out_not_modified = pending->out_not_modified; + if (out_etag != NULL) + *out_etag = g_steal_pointer (&pending->out_etag); + if (out_last_modified != NULL) + *out_last_modified = pending->out_last_modified; + return TRUE; } @@ -1239,13 +1301,16 @@ GPtrArray *mirrorlist, const char *filename, OstreeFetcherRequestFlags flags, + const char *if_none_match, + guint64 if_modified_since, guint64 max_size, int priority, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { - _ostree_fetcher_request_async (self, mirrorlist, filename, flags, TRUE, + _ostree_fetcher_request_async (self, mirrorlist, filename, flags, + if_none_match, if_modified_since, TRUE, max_size, priority, cancellable, callback, user_data); } @@ -1254,6 +1319,9 @@ _ostree_fetcher_request_to_membuf_finish (OstreeFetcher *self, GAsyncResult *result, GBytes **out_buf, + gboolean *out_not_modified, + char **out_etag, + guint64 *out_last_modified, GError **error) { GTask *task; @@ -1274,6 +1342,13 @@ g_assert (out_buf); *out_buf = ret; + if (out_not_modified != NULL) + *out_not_modified = pending->out_not_modified; + if (out_etag != NULL) + *out_etag = g_steal_pointer (&pending->out_etag); + if (out_last_modified != NULL) + *out_last_modified = pending->out_last_modified; + return TRUE; } diff -Nru ostree-2020.7/src/libostree/ostree-fetcher-util.c ostree-2020.8/src/libostree/ostree-fetcher-util.c --- ostree-2020.7/src/libostree/ostree-fetcher-util.c 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-fetcher-util.c 2020-10-27 09:14:08.000000000 +0000 @@ -34,6 +34,9 @@ typedef struct { GBytes *result_buf; + gboolean result_not_modified; + char *result_etag; + guint64 result_last_modified; /* second since the epoch */ gboolean done; GError **error; } @@ -48,6 +51,8 @@ (void)_ostree_fetcher_request_to_membuf_finish ((OstreeFetcher*)object, result, &data->result_buf, + &data->result_not_modified, + &data->result_etag, &data->result_last_modified, data->error); data->done = TRUE; } @@ -57,7 +62,12 @@ GPtrArray *mirrorlist, const char *filename, OstreeFetcherRequestFlags flags, + const char *if_none_match, + guint64 if_modified_since, GBytes **out_contents, + gboolean *out_not_modified, + char **out_etag, + guint64 *out_last_modified, guint64 max_size, GCancellable *cancellable, GError **error) @@ -79,7 +89,7 @@ data.error = error; _ostree_fetcher_request_to_membuf (fetcher, mirrorlist, filename, - flags, + flags, if_none_match, if_modified_since, max_size, OSTREE_FETCHER_DEFAULT_PRIORITY, cancellable, fetch_uri_sync_on_complete, &data); while (!data.done) @@ -94,6 +104,12 @@ g_clear_error (error); ret = TRUE; *out_contents = NULL; + if (out_not_modified != NULL) + *out_not_modified = FALSE; + if (out_etag != NULL) + *out_etag = NULL; + if (out_last_modified != NULL) + *out_last_modified = 0; } } goto out; @@ -101,10 +117,17 @@ ret = TRUE; *out_contents = g_steal_pointer (&data.result_buf); + if (out_not_modified != NULL) + *out_not_modified = data.result_not_modified; + if (out_etag != NULL) + *out_etag = g_steal_pointer (&data.result_etag); + if (out_last_modified != NULL) + *out_last_modified = data.result_last_modified; out: if (mainctx) g_main_context_pop_thread_default (mainctx); g_clear_pointer (&data.result_buf, (GDestroyNotify)g_bytes_unref); + g_clear_pointer (&data.result_etag, g_free); return ret; } @@ -113,8 +136,13 @@ GPtrArray *mirrorlist, const char *filename, OstreeFetcherRequestFlags flags, + const char *if_none_match, + guint64 if_modified_since, guint n_network_retries, GBytes **out_contents, + gboolean *out_not_modified, + char **out_etag, + guint64 *out_last_modified, guint64 max_size, GCancellable *cancellable, GError **error) @@ -127,7 +155,9 @@ g_clear_error (&local_error); if (_ostree_fetcher_mirrored_request_to_membuf_once (fetcher, mirrorlist, filename, flags, - out_contents, max_size, + if_none_match, if_modified_since, + out_contents, out_not_modified, out_etag, + out_last_modified, max_size, cancellable, &local_error)) return TRUE; } @@ -143,8 +173,13 @@ _ostree_fetcher_request_uri_to_membuf (OstreeFetcher *fetcher, OstreeFetcherURI *uri, OstreeFetcherRequestFlags flags, + const char *if_none_match, + guint64 if_modified_since, guint n_network_retries, GBytes **out_contents, + gboolean *out_not_modified, + char **out_etag, + guint64 *out_last_modified, guint64 max_size, GCancellable *cancellable, GError **error) @@ -152,7 +187,9 @@ g_autoptr(GPtrArray) mirrorlist = g_ptr_array_new (); g_ptr_array_add (mirrorlist, uri); /* no transfer */ return _ostree_fetcher_mirrored_request_to_membuf (fetcher, mirrorlist, NULL, flags, - n_network_retries, out_contents, max_size, + if_none_match, if_modified_since, + n_network_retries, out_contents, + out_not_modified, out_etag, out_last_modified, max_size, cancellable, error); } diff -Nru ostree-2020.7/src/libostree/ostree-fetcher-util.h ostree-2020.8/src/libostree/ostree-fetcher-util.h --- ostree-2020.7/src/libostree/ostree-fetcher-util.h 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-fetcher-util.h 2020-10-27 09:14:08.000000000 +0000 @@ -56,8 +56,13 @@ GPtrArray *mirrorlist, const char *filename, OstreeFetcherRequestFlags flags, + const char *if_none_match, + guint64 if_modified_since, guint n_network_retries, GBytes **out_contents, + gboolean *out_not_modified, + char **out_etag, + guint64 *out_last_modified, guint64 max_size, GCancellable *cancellable, GError **error); @@ -65,8 +70,13 @@ gboolean _ostree_fetcher_request_uri_to_membuf (OstreeFetcher *fetcher, OstreeFetcherURI *uri, OstreeFetcherRequestFlags flags, + const char *if_none_match, + guint64 if_modified_since, guint n_network_retries, GBytes **out_contents, + gboolean *out_not_modified, + char **out_etag, + guint64 *out_last_modified, guint64 max_size, GCancellable *cancellable, GError **error); diff -Nru ostree-2020.7/src/libostree/ostree-metalink.c ostree-2020.8/src/libostree/ostree-metalink.c --- ostree-2020.7/src/libostree/ostree-metalink.c 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-metalink.c 2020-10-27 09:14:08.000000000 +0000 @@ -436,8 +436,10 @@ if (!_ostree_fetcher_request_uri_to_membuf (self->metalink->fetcher, uri, 0, + NULL, 0, self->metalink->n_network_retries, &bytes, + NULL, NULL, NULL, self->metalink->max_size, self->cancellable, error)) @@ -618,8 +620,9 @@ request.parser = g_markup_parse_context_new (&metalink_parser, G_MARKUP_PREFIX_ERROR_POSITION, &request, NULL); if (!_ostree_fetcher_request_uri_to_membuf (self->fetcher, self->uri, 0, + NULL, 0, self->n_network_retries, - &contents, self->max_size, + &contents, NULL, NULL, NULL, self->max_size, cancellable, error)) goto out; diff -Nru ostree-2020.7/src/libostree/ostree-remote-private.h ostree-2020.8/src/libostree/ostree-remote-private.h --- ostree-2020.7/src/libostree/ostree-remote-private.h 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-remote-private.h 2020-11-10 11:34:43.000000000 +0000 @@ -41,7 +41,7 @@ * remote which this one inherits from, and is what should be used in refspecs * for pulls from this remote. If it’s %NULL, @name should be used instead. */ struct OstreeRemote { - volatile int ref_count; + int ref_count; /* atomic */ char *name; /* (not nullable) */ char *refspec_name; /* (nullable) */ char *group; /* group name in options (not nullable) */ diff -Nru ostree-2020.7/src/libostree/ostree-repo.c ostree-2020.8/src/libostree/ostree-repo.c --- ostree-2020.7/src/libostree/ostree-repo.c 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-repo.c 2020-11-03 12:17:16.000000000 +0000 @@ -1048,7 +1048,6 @@ g_mutex_clear (&self->txn_lock); g_free (self->collection_id); g_strfreev (self->repo_finders); - g_free (self->bootloader); g_clear_pointer (&self->remotes, g_hash_table_destroy); g_mutex_clear (&self->remotes_lock); @@ -3186,28 +3185,28 @@ GCancellable *cancellable, GError **error) { - { g_autofree char *bootloader = NULL; + g_autofree char *bootloader = NULL; - if (!ot_keyfile_get_value_with_default_group_optional (self->config, "sysroot", - "bootloader", "auto", - &bootloader, error)) - return FALSE; - - /* TODO: possibly later add support for specifying a generic bootloader - * binary "x" in /usr/lib/ostree/bootloaders/x). See: - * https://github.com/ostreedev/ostree/issues/1719 - * https://github.com/ostreedev/ostree/issues/1801 - * Also, dedup these strings with the bootloader implementations - */ - if (!(g_str_equal (bootloader, "auto") || g_str_equal (bootloader, "none") - || g_str_equal (bootloader, "zipl"))) - return glnx_throw (error, "Invalid bootloader configuration: '%s'", bootloader); + if (!ot_keyfile_get_value_with_default_group_optional (self->config, "sysroot", + "bootloader", "auto", + &bootloader, error)) + return FALSE; - g_free (self->bootloader); - self->bootloader = g_steal_pointer (&bootloader); - } + /* TODO: possibly later add support for specifying a generic bootloader + * binary "x" in /usr/lib/ostree/bootloaders/x). See: + * https://github.com/ostreedev/ostree/issues/1719 + * https://github.com/ostreedev/ostree/issues/1801 + */ + for (int i = 0; CFG_SYSROOT_BOOTLOADER_OPTS_STR[i]; i++) + { + if (g_str_equal (bootloader, CFG_SYSROOT_BOOTLOADER_OPTS_STR[i])) + { + self->bootloader = (OstreeCfgSysrootBootloaderOpt) i; + return TRUE; + } + } - return TRUE; + return glnx_throw (error, "Invalid bootloader configuration: '%s'", bootloader); } /** @@ -5222,6 +5221,67 @@ #endif /* OSTREE_DISABLE_GPGME */ } + +/** + * ostree_repo_gpg_sign_data: + * @self: Self + * @data: Data as a #GBytes + * @old_signatures: Existing signatures to append to (or %NULL) + * @key_id: (array zero-terminated=1) (element-type utf8): NULL-terminated array of GPG keys. + * @homedir: (allow-none): GPG home directory, or %NULL + * @out_signatures: (out): in case of success will contain signature + * @cancellable: A #GCancellable + * @error: a #GError + * + * Sign the given @data with the specified keys in @key_id. Similar to + * ostree_repo_add_gpg_signature_summary() but can be used on any + * data. + * + * You can use ostree_repo_gpg_verify_data() to verify the signatures. + * + * Returns: @TRUE if @data has been signed successfully, + * @FALSE in case of error (@error will contain the reason). + * + * Since: 2020.8 + */ +gboolean +ostree_repo_gpg_sign_data (OstreeRepo *self, + GBytes *data, + GBytes *old_signatures, + const gchar **key_id, + const gchar *homedir, + GBytes **out_signatures, + GCancellable *cancellable, + GError **error) +{ +#ifndef OSTREE_DISABLE_GPGME + g_autoptr(GVariant) metadata = NULL; + g_autoptr(GVariant) res = NULL; + + if (old_signatures) + metadata = g_variant_ref_sink (g_variant_new_from_bytes (G_VARIANT_TYPE (OSTREE_SUMMARY_SIG_GVARIANT_STRING), old_signatures, FALSE)); + + for (guint i = 0; key_id[i]; i++) + { + g_autoptr(GBytes) signature_data = NULL; + if (!sign_data (self, data, key_id[i], homedir, + &signature_data, + cancellable, error)) + return FALSE; + + g_autoptr(GVariant) old_metadata = g_steal_pointer (&metadata); + metadata = _ostree_detached_metadata_append_gpg_sig (old_metadata, signature_data); + } + + res = g_variant_get_normal_form (metadata); + *out_signatures = g_variant_get_data_as_bytes (res); + return TRUE; +#else + return glnx_throw (error, "GPG feature is disabled in a build time"); +#endif /* OSTREE_DISABLE_GPGME */ +} + + #ifndef OSTREE_DISABLE_GPGME /* Special remote for _ostree_repo_gpg_verify_with_metadata() */ static const char *OSTREE_ALL_REMOTES = "__OSTREE_ALL_REMOTES__"; @@ -5749,6 +5809,8 @@ * commits from working. */ g_autoptr(OstreeRepoAutoLock) lock = NULL; + gboolean no_deltas_in_summary = FALSE; + lock = _ostree_repo_auto_lock_push (self, OSTREE_REPO_LOCK_EXCLUSIVE, cancellable, error); if (!lock) @@ -5781,35 +5843,41 @@ } } - { - g_autoptr(GPtrArray) delta_names = NULL; - g_auto(GVariantDict) deltas_builder = OT_VARIANT_BUILDER_INITIALIZER; + if (!ot_keyfile_get_boolean_with_default (self->config, "core", + "no-deltas-in-summary", FALSE, + &no_deltas_in_summary, error)) + return FALSE; - if (!ostree_repo_list_static_delta_names (self, &delta_names, cancellable, error)) - return FALSE; + if (!no_deltas_in_summary) + { + g_autoptr(GPtrArray) delta_names = NULL; + g_auto(GVariantDict) deltas_builder = OT_VARIANT_BUILDER_INITIALIZER; - g_variant_dict_init (&deltas_builder, NULL); - for (guint i = 0; i < delta_names->len; i++) - { - g_autofree char *from = NULL; - g_autofree char *to = NULL; - GVariant *digest; + if (!ostree_repo_list_static_delta_names (self, &delta_names, cancellable, error)) + return FALSE; - if (!_ostree_parse_delta_name (delta_names->pdata[i], &from, &to, error)) - return FALSE; + g_variant_dict_init (&deltas_builder, NULL); + for (guint i = 0; i < delta_names->len; i++) + { + g_autofree char *from = NULL; + g_autofree char *to = NULL; + GVariant *digest; - digest = _ostree_repo_static_delta_superblock_digest (self, - (from && from[0]) ? from : NULL, - to, cancellable, error); - if (digest == NULL) - return FALSE; + if (!_ostree_parse_delta_name (delta_names->pdata[i], &from, &to, error)) + return FALSE; - g_variant_dict_insert_value (&deltas_builder, delta_names->pdata[i], digest); - } + digest = _ostree_repo_static_delta_superblock_digest (self, + (from && from[0]) ? from : NULL, + to, cancellable, error); + if (digest == NULL) + return FALSE; - if (delta_names->len > 0) - g_variant_dict_insert_value (&additional_metadata_builder, OSTREE_SUMMARY_STATIC_DELTAS, g_variant_dict_end (&deltas_builder)); - } + g_variant_dict_insert_value (&deltas_builder, delta_names->pdata[i], digest); + } + + if (delta_names->len > 0) + g_variant_dict_insert_value (&additional_metadata_builder, OSTREE_SUMMARY_STATIC_DELTAS, g_variant_dict_end (&deltas_builder)); + } { g_variant_dict_insert_value (&additional_metadata_builder, OSTREE_SUMMARY_LAST_MODIFIED, @@ -5834,6 +5902,9 @@ g_variant_new_boolean (tombstone_commits)); } + g_variant_dict_insert_value (&additional_metadata_builder, OSTREE_SUMMARY_INDEXED_DELTAS, + g_variant_new_boolean (TRUE)); + /* Add refs which have a collection specified, which could be in refs/mirrors, * refs/heads, and/or refs/remotes. */ { @@ -5927,6 +5998,9 @@ g_variant_ref_sink (summary); } + if (!ostree_repo_static_delta_reindex (self, 0, NULL, cancellable, error)) + return FALSE; + if (!_ostree_repo_file_replace_contents (self, self->repo_dir_fd, "summary", @@ -6248,7 +6322,7 @@ * Get the bootloader configured. See the documentation for the * "sysroot.bootloader" config key. * - * Returns: bootloader configuration for the sysroot + * Returns: (transfer none): bootloader configuration for the sysroot * Since: 2019.2 */ const gchar * @@ -6256,7 +6330,7 @@ { g_return_val_if_fail (OSTREE_IS_REPO (self), NULL); - return self->bootloader; + return CFG_SYSROOT_BOOTLOADER_OPTS_STR[self->bootloader]; } diff -Nru ostree-2020.7/src/libostree/ostree-repo.h ostree-2020.8/src/libostree/ostree-repo.h --- ostree-2020.7/src/libostree/ostree-repo.h 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-repo.h 2020-10-27 09:14:08.000000000 +0000 @@ -1046,6 +1046,12 @@ GCancellable *cancellable, GError **error); +_OSTREE_PUBLIC +gboolean ostree_repo_list_static_delta_indexes (OstreeRepo *self, + GPtrArray **out_indexes, + GCancellable *cancellable, + GError **error); + /** * OstreeStaticDeltaGenerateOpt: * @OSTREE_STATIC_DELTA_GENERATE_OPT_LOWLATENCY: Optimize for speed of delta creation over space @@ -1068,6 +1074,23 @@ GCancellable *cancellable, GError **error); +/** + * OstreeStaticDeltaIndexFlags: + * @OSTREE_STATIC_DELTA_INDEX_FLAGS_NONE: No special flags + * + * Flags controlling static delta index generation. + */ +typedef enum { + OSTREE_STATIC_DELTA_INDEX_FLAGS_NONE = 0, +} OstreeStaticDeltaIndexFlags; + +_OSTREE_PUBLIC +gboolean ostree_repo_static_delta_reindex (OstreeRepo *repo, + OstreeStaticDeltaIndexFlags flags, + const char *opt_to_commit, + GCancellable *cancellable, + GError **error); + _OSTREE_PUBLIC gboolean ostree_repo_static_delta_execute_offline_with_signature (OstreeRepo *self, GFile *dir_or_file, @@ -1394,6 +1417,16 @@ GError **error); _OSTREE_PUBLIC +gboolean ostree_repo_gpg_sign_data (OstreeRepo *self, + GBytes *data, + GBytes *old_signatures, + const gchar **key_id, + const gchar *homedir, + GBytes **out_signatures, + GCancellable *cancellable, + GError **error); + +_OSTREE_PUBLIC OstreeGpgVerifyResult * ostree_repo_verify_commit_ext (OstreeRepo *self, const gchar *commit_checksum, GFile *keyringdir, diff -Nru ostree-2020.7/src/libostree/ostree-repo-private.h ostree-2020.8/src/libostree/ostree-repo-private.h --- ostree-2020.7/src/libostree/ostree-repo-private.h 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-repo-private.h 2020-11-10 11:34:43.000000000 +0000 @@ -57,6 +57,7 @@ #define OSTREE_SUMMARY_COLLECTION_MAP "ostree.summary.collection-map" #define OSTREE_SUMMARY_MODE "ostree.summary.mode" #define OSTREE_SUMMARY_TOMBSTONE_COMMITS "ostree.summary.tombstone-commits" +#define OSTREE_SUMMARY_INDEXED_DELTAS "ostree.summary.indexed-deltas" #define _OSTREE_PAYLOAD_LINK_PREFIX "../" #define _OSTREE_PAYLOAD_LINK_PREFIX_LEN (sizeof (_OSTREE_PAYLOAD_LINK_PREFIX) - 1) @@ -71,7 +72,7 @@ } OstreeRepoTestErrorFlags; struct OstreeRepoCommitModifier { - volatile gint refcount; + gint refcount; /* atomic */ OstreeRepoCommitModifierFlags flags; OstreeRepoCommitFilter filter; @@ -109,6 +110,28 @@ _OSTREE_FEATURE_YES, } _OstreeFeatureSupport; +/* Possible values for the sysroot.bootloader configuration variable */ +typedef enum { + CFG_SYSROOT_BOOTLOADER_OPT_AUTO = 0, + CFG_SYSROOT_BOOTLOADER_OPT_NONE, + CFG_SYSROOT_BOOTLOADER_OPT_GRUB2, + CFG_SYSROOT_BOOTLOADER_OPT_SYSLINUX, + CFG_SYSROOT_BOOTLOADER_OPT_UBOOT, + CFG_SYSROOT_BOOTLOADER_OPT_ZIPL, + /* Non-exhaustive */ +} OstreeCfgSysrootBootloaderOpt; + +static const char* const CFG_SYSROOT_BOOTLOADER_OPTS_STR[] = { + /* This must be kept in the same order as the enum */ + "auto", + "none", + "grub2", + "syslinux", + "uboot", + "zipl", + NULL, +}; + /** * OstreeRepo: * @@ -192,7 +215,7 @@ guint64 payload_link_threshold; gint fs_support_reflink; /* The underlying filesystem has support for ioctl (FICLONE..) */ gchar **repo_finders; - gchar *bootloader; /* Configure which bootloader to use. */ + OstreeCfgSysrootBootloaderOpt bootloader; /* Configure which bootloader to use. */ OstreeRepo *parent_repo; }; diff -Nru ostree-2020.7/src/libostree/ostree-repo-pull.c ostree-2020.8/src/libostree/ostree-repo-pull.c --- ostree-2020.7/src/libostree/ostree-repo-pull.c 2020-10-13 15:04:27.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-repo-pull.c 2020-11-10 11:34:43.000000000 +0000 @@ -46,6 +46,7 @@ #include #include +#include #ifdef HAVE_LIBSYSTEMD #include #endif @@ -103,6 +104,14 @@ guint n_retries_remaining; } FetchDeltaSuperData; +typedef struct { + OtPullData *pull_data; + char *from_revision; + char *to_revision; + OstreeCollectionRef *requested_ref; /* (nullable) */ + guint n_retries_remaining; +} FetchDeltaIndexData; + static void variant_or_null_unref (gpointer data) { @@ -115,6 +124,8 @@ FetchStaticDeltaData *fetch); static void start_fetch_delta_superblock (OtPullData *pull_data, FetchDeltaSuperData *fetch_data); +static void start_fetch_delta_index (OtPullData *pull_data, + FetchDeltaIndexData *fetch_data); static gboolean fetcher_queue_is_full (OtPullData *pull_data); static void queue_scan_one_metadata_object (OtPullData *pull_data, const char *csum, @@ -134,6 +145,8 @@ static void enqueue_one_object_request_s (OtPullData *pull_data, FetchObjectData *fetch_data); +static void enqueue_one_static_delta_index_request_s (OtPullData *pull_data, + FetchDeltaIndexData *fetch_data); static void enqueue_one_static_delta_superblock_request_s (OtPullData *pull_data, FetchDeltaSuperData *fetch_data); static void enqueue_one_static_delta_part_request_s (OtPullData *pull_data, @@ -148,6 +161,11 @@ GCancellable *cancellable, GError **error); static void scan_object_queue_data_free (ScanObjectQueueData *scan_data); +static gboolean initiate_delta_request (OtPullData *pull_data, + const OstreeCollectionRef *ref, + const char *to_revision, + const char *delta_from_revision, + GError **error); static gboolean update_progress (gpointer user_data) @@ -286,6 +304,7 @@ g_queue_foreach (&pull_data->scan_object_queue, (GFunc) scan_object_queue_data_free, NULL); g_queue_clear (&pull_data->scan_object_queue); g_hash_table_remove_all (pull_data->pending_fetch_metadata); + g_hash_table_remove_all (pull_data->pending_fetch_delta_indexes); g_hash_table_remove_all (pull_data->pending_fetch_delta_superblocks); g_hash_table_remove_all (pull_data->pending_fetch_deltaparts); g_hash_table_remove_all (pull_data->pending_fetch_content); @@ -319,6 +338,16 @@ g_variant_unref (objname); } + /* Next, process delta index requests */ + g_hash_table_iter_init (&hiter, pull_data->pending_fetch_delta_indexes); + while (!fetcher_queue_is_full (pull_data) && + g_hash_table_iter_next (&hiter, &key, &value)) + { + FetchDeltaIndexData *fetch = key; + g_hash_table_iter_steal (&hiter); + start_fetch_delta_index (pull_data, g_steal_pointer (&fetch)); + } + /* Next, process delta superblock requests */ g_hash_table_iter_init (&hiter, pull_data->pending_fetch_delta_superblocks); while (!fetcher_queue_is_full (pull_data) && @@ -458,8 +487,9 @@ g_autoptr(GBytes) bytes = NULL; if (!_ostree_fetcher_mirrored_request_to_membuf (fetcher, mirrorlist, filename, OSTREE_FETCHER_REQUEST_NUL_TERMINATION, + NULL, 0, n_network_retries, - &bytes, + &bytes, NULL, NULL, NULL, OSTREE_MAX_METADATA_SIZE, cancellable, error)) return FALSE; @@ -965,7 +995,7 @@ OstreeObjectType objtype; gboolean free_fetch_data = TRUE; - if (!_ostree_fetcher_request_to_tmpfile_finish (fetcher, result, &tmpf, error)) + if (!_ostree_fetcher_request_to_tmpfile_finish (fetcher, result, &tmpf, NULL, NULL, NULL, error)) goto out; ostree_object_name_deserialize (fetch_data->object, &checksum, &objtype); @@ -1105,7 +1135,7 @@ g_debug ("fetch of %s%s complete", checksum_obj, fetch_data->is_detached_meta ? " (detached)" : ""); - if (!_ostree_fetcher_request_to_tmpfile_finish (fetcher, result, &tmpf, error)) + if (!_ostree_fetcher_request_to_tmpfile_finish (fetcher, result, &tmpf, NULL, NULL, NULL, error)) { if (g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) { @@ -1282,7 +1312,7 @@ g_debug ("fetch static delta part %s complete", fetch_data->expected_checksum); - if (!_ostree_fetcher_request_to_tmpfile_finish (fetcher, result, &tmpf, error)) + if (!_ostree_fetcher_request_to_tmpfile_finish (fetcher, result, &tmpf, NULL, NULL, NULL, error)) goto out; /* Transfer ownership of the fd */ @@ -1994,7 +2024,7 @@ if (!is_meta && pull_data->trusted_http_direct) flags |= OSTREE_FETCHER_REQUEST_LINKABLE; _ostree_fetcher_request_to_tmpfile (pull_data->fetcher, mirrorlist, - obj_subpath, flags, expected_max_size, + obj_subpath, flags, NULL, 0, expected_max_size, is_meta ? OSTREE_REPO_PULL_METADATA_PRIORITY : OSTREE_REPO_PULL_CONTENT_PRIORITY, pull_data->cancellable, @@ -2115,11 +2145,12 @@ FetchStaticDeltaData *fetch) { g_autofree char *deltapart_path = _ostree_get_relative_static_delta_part_path (fetch->from_revision, fetch->to_revision, fetch->i); + g_debug ("starting fetch of deltapart %s", deltapart_path); pull_data->n_outstanding_deltapart_fetches++; g_assert_cmpint (pull_data->n_outstanding_deltapart_fetches, <=, _OSTREE_MAX_OUTSTANDING_DELTAPART_REQUESTS); _ostree_fetcher_request_to_tmpfile (pull_data->fetcher, pull_data->content_mirrorlist, - deltapart_path, 0, fetch->size, + deltapart_path, 0, NULL, 0, fetch->size, OSTREE_FETCHER_DEFAULT_PRIORITY, pull_data->cancellable, static_deltapart_fetch_on_complete, @@ -2468,6 +2499,16 @@ } static void +fetch_delta_index_data_free (FetchDeltaIndexData *fetch_data) +{ + g_free (fetch_data->from_revision); + g_free (fetch_data->to_revision); + if (fetch_data->requested_ref) + ostree_collection_ref_free (fetch_data->requested_ref); + g_free (fetch_data); +} + +static void set_required_deltas_error (GError **error, const char *from_revision, const char *to_revision) @@ -2494,6 +2535,7 @@ if (!_ostree_fetcher_request_to_membuf_finish ((OstreeFetcher*)src, res, &delta_superblock_data, + NULL, NULL, NULL, error)) { if (!g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) @@ -2567,9 +2609,11 @@ g_autofree char *delta_name = _ostree_get_relative_static_delta_superblock_path (fetch_data->from_revision, fetch_data->to_revision); + g_debug ("starting fetch of delta superblock %s", delta_name); _ostree_fetcher_request_to_membuf (pull_data->fetcher, pull_data->content_mirrorlist, delta_name, OSTREE_FETCHER_REQUEST_OPTIONAL_CONTENT, + NULL, 0, OSTREE_MAX_METADATA_SIZE, 0, pull_data->cancellable, on_superblock_fetched, @@ -2626,6 +2670,147 @@ } static gboolean +collect_available_deltas_for_pull (OtPullData *pull_data, + GVariant *deltas, + GError **error) +{ + gsize n; + + n = deltas ? g_variant_n_children (deltas) : 0; + for (gsize i = 0; i < n; i++) + { + const char *delta; + g_autoptr(GVariant) csum_v = NULL; + g_autoptr(GVariant) ref = g_variant_get_child_value (deltas, i); + + g_variant_get_child (ref, 0, "&s", &delta); + g_variant_get_child (ref, 1, "v", &csum_v); + + if (!validate_variant_is_csum (csum_v, error)) + return FALSE; + + guchar *csum_data = g_malloc (OSTREE_SHA256_DIGEST_LEN); + memcpy (csum_data, ostree_checksum_bytes_peek (csum_v), 32); + g_hash_table_insert (pull_data->summary_deltas_checksums, + g_strdup (delta), + csum_data); + } + + return TRUE; +} + +static void +on_delta_index_fetched (GObject *src, + GAsyncResult *res, + gpointer data) + +{ + FetchDeltaIndexData *fetch_data = data; + OtPullData *pull_data = fetch_data->pull_data; + g_autoptr(GError) local_error = NULL; + GError **error = &local_error; + g_autoptr(GBytes) delta_index_data = NULL; + const char *from_revision = fetch_data->from_revision; + const char *to_revision = fetch_data->to_revision; + + if (!_ostree_fetcher_request_to_membuf_finish ((OstreeFetcher*)src, + res, + &delta_index_data, + NULL, NULL, NULL, + error)) + { + if (!g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) + goto out; + g_clear_error (&local_error); + + /* below call to initiate_delta_request() will fail finding the delta and fall back to commit */ + } + else + { + g_autoptr(GVariant) delta_index = g_variant_ref_sink (g_variant_new_from_bytes (G_VARIANT_TYPE_VARDICT, delta_index_data, FALSE)); + g_autoptr(GVariant) deltas = g_variant_lookup_value (delta_index, OSTREE_SUMMARY_STATIC_DELTAS, G_VARIANT_TYPE ("a{sv}")); + + if (!collect_available_deltas_for_pull (pull_data, deltas, error)) + goto out; + } + + if (!initiate_delta_request (pull_data, + fetch_data->requested_ref, + to_revision, + from_revision, + &local_error)) + goto out; + + out: + g_assert (pull_data->n_outstanding_metadata_fetches > 0); + pull_data->n_outstanding_metadata_fetches--; + + if (local_error == NULL) + pull_data->n_fetched_metadata++; + + if (_ostree_fetcher_should_retry_request (local_error, fetch_data->n_retries_remaining--)) + enqueue_one_static_delta_index_request_s (pull_data, g_steal_pointer (&fetch_data)); + else + check_outstanding_requests_handle_error (pull_data, &local_error); + + g_clear_pointer (&fetch_data, fetch_delta_index_data_free); +} + +static void +start_fetch_delta_index (OtPullData *pull_data, + FetchDeltaIndexData *fetch_data) +{ + g_autofree char *delta_name = + _ostree_get_relative_static_delta_index_path (fetch_data->to_revision); + g_debug ("starting fetch of delta index %s", delta_name); + _ostree_fetcher_request_to_membuf (pull_data->fetcher, + pull_data->content_mirrorlist, + delta_name, OSTREE_FETCHER_REQUEST_OPTIONAL_CONTENT, + NULL, 0, + OSTREE_MAX_METADATA_SIZE, + 0, pull_data->cancellable, + on_delta_index_fetched, + g_steal_pointer (&fetch_data)); + pull_data->n_outstanding_metadata_fetches++; + pull_data->n_requested_metadata++; +} + +static void +enqueue_one_static_delta_index_request_s (OtPullData *pull_data, + FetchDeltaIndexData *fetch_data) +{ + if (fetcher_queue_is_full (pull_data)) + { + g_debug ("queuing fetch of static delta index to %s", + fetch_data->to_revision); + + g_hash_table_add (pull_data->pending_fetch_delta_indexes, + g_steal_pointer (&fetch_data)); + } + else + { + start_fetch_delta_index (pull_data, g_steal_pointer (&fetch_data)); + } +} + +/* Start a request for a static delta index */ +static void +enqueue_one_static_delta_index_request (OtPullData *pull_data, + const char *to_revision, + const char *from_revision, + const OstreeCollectionRef *ref) +{ + FetchDeltaIndexData *fdata = g_new0(FetchDeltaIndexData, 1); + fdata->pull_data = pull_data; + fdata->from_revision = g_strdup (from_revision); + fdata->to_revision = g_strdup (to_revision); + fdata->requested_ref = (ref != NULL) ? ostree_collection_ref_dup (ref) : NULL; + fdata->n_retries_remaining = pull_data->n_network_retries; + + enqueue_one_static_delta_index_request_s (pull_data, g_steal_pointer (&fdata)); +} + +static gboolean _ostree_repo_verify_summary (OstreeRepo *self, const char *name, gboolean gpg_verify_summary, @@ -2699,6 +2884,64 @@ return TRUE; } +static void +_ostree_repo_load_cache_summary_properties (OstreeRepo *self, + const char *filename, + const char *extension, + char **out_etag, + guint64 *out_last_modified) +{ + const char *file = glnx_strjoina (_OSTREE_SUMMARY_CACHE_DIR, "/", filename, extension); + glnx_autofd int fd = -1; + + if (self->cache_dir_fd == -1) + return; + + if (!glnx_openat_rdonly (self->cache_dir_fd, file, TRUE, &fd, NULL)) + return; + + if (out_etag != NULL) + { + g_autoptr(GBytes) etag_bytes = glnx_fgetxattr_bytes (fd, "user.etag", NULL); + if (etag_bytes != NULL) + { + const guint8 *buf; + gsize buf_len; + + buf = g_bytes_get_data (etag_bytes, &buf_len); + + /* Loosely validate against https://tools.ietf.org/html/rfc7232#section-2.3 + * by checking there are no embedded nuls. */ + for (gsize i = 0; i < buf_len; i++) + { + if (buf[i] == 0) + { + buf_len = 0; + break; + } + } + + /* Nul-terminate and return */ + if (buf_len > 0) + *out_etag = g_strndup ((const char *) buf, buf_len); + else + *out_etag = NULL; + } + else + *out_etag = NULL; + } + + if (out_last_modified != NULL) + { + struct stat statbuf; + + if (glnx_fstatat (fd, "", &statbuf, AT_EMPTY_PATH, NULL)) + *out_last_modified = statbuf.st_mtim.tv_sec; + else + *out_last_modified = 0; + } +} + static gboolean _ostree_repo_load_cache_summary_file (OstreeRepo *self, const char *filename, @@ -2774,11 +3017,38 @@ return TRUE; } +static void +store_file_cache_properties (int dir_fd, + const char *filename, + const char *etag, + guint64 last_modified) +{ + glnx_autofd int fd = -1; + struct timespec time_vals[] = + { + { .tv_sec = last_modified, .tv_nsec = UTIME_OMIT }, /* access, leave unchanged */ + { .tv_sec = last_modified, .tv_nsec = 0 }, /* modification */ + }; + + if (!glnx_openat_rdonly (dir_fd, filename, TRUE, &fd, NULL)) + return; + + if (etag != NULL) + TEMP_FAILURE_RETRY (fsetxattr (fd, "user.etag", etag, strlen (etag), 0)); + else + TEMP_FAILURE_RETRY (fremovexattr (fd, "user.etag")); + + if (last_modified > 0) + TEMP_FAILURE_RETRY (futimens (fd, time_vals)); +} + static gboolean _ostree_repo_save_cache_summary_file (OstreeRepo *self, const char *filename, const char *extension, GBytes *data, + const char *etag, + guint64 last_modified, GCancellable *cancellable, GError **error) { @@ -2799,6 +3069,9 @@ cancellable, error)) return FALSE; + /* Store the caching properties. This is non-fatal on failure. */ + store_file_cache_properties (self->cache_dir_fd, file, etag, last_modified); + return TRUE; } @@ -2807,16 +3080,24 @@ _ostree_repo_cache_summary (OstreeRepo *self, const char *remote, GBytes *summary, + const char *summary_etag, + guint64 summary_last_modified, GBytes *summary_sig, + const char *summary_sig_etag, + guint64 summary_sig_last_modified, GCancellable *cancellable, GError **error) { if (!_ostree_repo_save_cache_summary_file (self, remote, NULL, - summary, cancellable, error)) + summary, + summary_etag, summary_last_modified, + cancellable, error)) return FALSE; if (!_ostree_repo_save_cache_summary_file (self, remote, ".sig", - summary_sig, cancellable, error)) + summary_sig, + summary_sig_etag, summary_sig_last_modified, + cancellable, error)) return FALSE; return TRUE; @@ -2964,8 +3245,13 @@ GPtrArray *mirrorlist, const char *filename, gboolean is_metalink, + const char *if_none_match, + guint64 if_modified_since, guint n_network_retries, GBytes **out_bytes, + gboolean *out_not_modified, + char **out_etag, + guint64 *out_last_modified, GCancellable *cancellable, GError **error) { @@ -3000,8 +3286,10 @@ { return _ostree_fetcher_mirrored_request_to_membuf (fetcher, mirrorlist, filename, OSTREE_FETCHER_REQUEST_OPTIONAL_CONTENT, + if_none_match, if_modified_since, n_network_retries, - out_bytes, OSTREE_MAX_METADATA_SIZE, + out_bytes, out_not_modified, out_etag, out_last_modified, + OSTREE_MAX_METADATA_SIZE, cancellable, error); } } @@ -3152,6 +3440,65 @@ return TRUE; } +static gboolean +initiate_delta_request (OtPullData *pull_data, + const OstreeCollectionRef *ref, + const char *to_revision, + const char *delta_from_revision, + GError **error) +{ + DeltaSearchResult deltares; + + /* Look for a delta to @to_revision in the summary data */ + if (!get_best_static_delta_start_for (pull_data, to_revision, &deltares, + pull_data->cancellable, error)) + return FALSE; + + switch (deltares.result) + { + case DELTA_SEARCH_RESULT_NO_MATCH: + { + if (pull_data->require_static_deltas) /* No deltas found; are they required? */ + { + set_required_deltas_error (error, (ref != NULL) ? ref->ref_name : "", to_revision); + return FALSE; + } + else /* No deltas, fall back to object fetches. */ + queue_scan_one_metadata_object (pull_data, to_revision, OSTREE_OBJECT_TYPE_COMMIT, NULL, 0, ref); + } + break; + case DELTA_SEARCH_RESULT_FROM: + enqueue_one_static_delta_superblock_request (pull_data, deltares.from_revision, to_revision, ref); + break; + case DELTA_SEARCH_RESULT_SCRATCH: + { + /* If a from-scratch delta is available, we don’t want to use it if + * the ref already exists locally, since we are likely only a few + * commits out of date; so doing an object pull is likely more + * bandwidth efficient. */ + if (delta_from_revision != NULL) + queue_scan_one_metadata_object (pull_data, to_revision, OSTREE_OBJECT_TYPE_COMMIT, NULL, 0, ref); + else + enqueue_one_static_delta_superblock_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); + } + } + + return TRUE; +} + /* * initiate_request: * @ref: Optional ref name and collection ID @@ -3191,57 +3538,17 @@ return FALSE; } - /* If we have a summary, we can use the newer logic */ - if (pull_data->summary) + /* If we have a summary or delta index, we can use the newer logic. + * We prefer the index as it might have more deltas than the summary + * (i.e. leave some deltas out of summary to make it smaller). */ + if (pull_data->has_indexed_deltas) { - DeltaSearchResult deltares; - - /* Look for a delta to @to_revision in the summary data */ - if (!get_best_static_delta_start_for (pull_data, to_revision, &deltares, - pull_data->cancellable, error)) + enqueue_one_static_delta_index_request (pull_data, to_revision, delta_from_revision, ref); + } + else if (pull_data->summary_has_deltas) + { + if (!initiate_delta_request (pull_data, ref, to_revision, delta_from_revision, error)) return FALSE; - - switch (deltares.result) - { - case DELTA_SEARCH_RESULT_NO_MATCH: - { - if (pull_data->require_static_deltas) /* No deltas found; are they required? */ - { - set_required_deltas_error (error, (ref != NULL) ? ref->ref_name : "", to_revision); - return FALSE; - } - else /* No deltas, fall back to object fetches. */ - queue_scan_one_metadata_object (pull_data, to_revision, OSTREE_OBJECT_TYPE_COMMIT, NULL, 0, ref); - } - break; - case DELTA_SEARCH_RESULT_FROM: - enqueue_one_static_delta_superblock_request (pull_data, deltares.from_revision, to_revision, ref); - break; - case DELTA_SEARCH_RESULT_SCRATCH: - { - /* If a from-scratch delta is available, we don’t want to use it if - * the ref already exists locally, since we are likely only a few - * commits out of date; so doing an object pull is likely more - * bandwidth efficient. */ - if (delta_from_revision != NULL) - queue_scan_one_metadata_object (pull_data, to_revision, OSTREE_OBJECT_TYPE_COMMIT, NULL, 0, ref); - else - enqueue_one_static_delta_superblock_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) { @@ -3285,6 +3592,20 @@ return TRUE; } +static gboolean +all_requested_refs_have_commit (GHashTable *requested_refs /* (element-type OstreeCollectionRef utf8) */) +{ + GLNX_HASH_TABLE_FOREACH_KV (requested_refs, const OstreeCollectionRef*, ref, + const char*, override_commitid) + { + /* Note: "" override means whatever is latest */ + if (override_commitid == NULL || *override_commitid == 0) + return FALSE; + } + + return TRUE; +} + /* ------------------------------------------------------------------------------------------ * Below is the libsoup-invariant API; these should match * the stub functions in the #else clause @@ -3360,6 +3681,9 @@ { gboolean ret = FALSE; g_autoptr(GBytes) bytes_summary = NULL; + gboolean summary_not_modified = FALSE; + g_autofree char *summary_etag = NULL; + guint64 summary_last_modified = 0; g_autofree char *metalink_url_str = NULL; g_autoptr(GHashTable) requested_refs_to_fetch = NULL; /* (element-type OstreeCollectionRef utf8) */ g_autoptr(GHashTable) commits_to_fetch = NULL; @@ -3387,9 +3711,11 @@ gboolean opt_ref_keyring_map_set = FALSE; gboolean disable_sign_verify = FALSE; gboolean disable_sign_verify_summary = FALSE; + gboolean need_summary = FALSE; const char *main_collection_id = NULL; const char *url_override = NULL; gboolean inherit_transaction = FALSE; + gboolean require_summary_for_mirror = FALSE; g_autoptr(GHashTable) updated_requested_refs_to_fetch = NULL; /* (element-type OstreeCollectionRef utf8) */ gsize i; g_autofree char **opt_localcache_repos = NULL; @@ -3401,6 +3727,7 @@ */ const char *the_ref_to_fetch = NULL; OstreeRepoTransactionStats tstats = { 0, }; + gboolean remote_mode_loaded = FALSE; /* Default */ pull_data->max_metadata_size = OSTREE_MAX_METADATA_SIZE; @@ -3547,6 +3874,7 @@ pull_data->pending_fetch_metadata = g_hash_table_new_full (ostree_hash_object_name, g_variant_equal, (GDestroyNotify)g_variant_unref, (GDestroyNotify)fetch_object_data_free); + pull_data->pending_fetch_delta_indexes = g_hash_table_new_full (NULL, NULL, (GDestroyNotify) fetch_delta_index_data_free, NULL); pull_data->pending_fetch_delta_superblocks = g_hash_table_new_full (NULL, NULL, (GDestroyNotify) fetch_delta_super_data_free, NULL); pull_data->pending_fetch_deltaparts = g_hash_table_new_full (NULL, NULL, (GDestroyNotify)fetch_static_delta_data_free, NULL); @@ -3823,347 +4151,509 @@ if (pull_data->is_commit_only) pull_data->disable_static_deltas = TRUE; - pull_data->static_delta_superblocks = g_ptr_array_new_with_free_func ((GDestroyNotify)g_variant_unref); - - { - g_autoptr(GBytes) bytes_sig = NULL; - gsize n; - g_autoptr(GVariant) refs = NULL; - g_autoptr(GVariant) deltas = NULL; - g_autoptr(GVariant) additional_metadata = NULL; - gboolean summary_from_cache = FALSE; - gboolean remote_mode_loaded = FALSE; - gboolean tombstone_commits = FALSE; - - if (summary_sig_bytes_v) - { - /* Must both be specified */ - g_assert (summary_bytes_v); + /* Compute the set of collection-refs (and optional commit id) to fetch */ - bytes_sig = g_variant_get_data_as_bytes (summary_sig_bytes_v); - bytes_summary = g_variant_get_data_as_bytes (summary_bytes_v); + if (pull_data->is_mirror && !refs_to_fetch && !opt_collection_refs_set && !configured_branches) + { + require_summary_for_mirror = TRUE; + } + else if (opt_collection_refs_set) + { + const gchar *collection_id, *ref_name, *checksum; - if (!bytes_sig || !bytes_summary) - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "summary-bytes or summary-sig-bytes set to invalid value"); + while (g_variant_iter_loop (collection_refs_iter, "(&s&s&s)", &collection_id, &ref_name, &checksum)) + { + if (!ostree_validate_rev (ref_name, error)) goto out; - } - - g_debug ("Loaded %s summary from options", remote_name_or_baseurl); - } - - if (!bytes_sig) - { - if (!_ostree_fetcher_mirrored_request_to_membuf (pull_data->fetcher, - pull_data->meta_mirrorlist, - "summary.sig", OSTREE_FETCHER_REQUEST_OPTIONAL_CONTENT, - pull_data->n_network_retries, - &bytes_sig, - OSTREE_MAX_METADATA_SIZE, - cancellable, error)) - goto out; - } + g_hash_table_insert (requested_refs_to_fetch, + ostree_collection_ref_new (collection_id, ref_name), + (*checksum != '\0') ? g_strdup (checksum) : NULL); + } + } + else if (refs_to_fetch != NULL) + { + char **strviter = refs_to_fetch; + char **commitid_strviter = override_commit_ids ?: NULL; - if (bytes_sig && - !bytes_summary && - !pull_data->remote_repo_local && - !_ostree_repo_load_cache_summary_if_same_sig (self, - remote_name_or_baseurl, - bytes_sig, - &bytes_summary, - cancellable, - error)) - goto out; + while (*strviter) + { + const char *branch = *strviter; - if (bytes_summary && !summary_bytes_v) - { - g_debug ("Loaded %s summary from cache", remote_name_or_baseurl); - summary_from_cache = TRUE; - } + if (ostree_validate_checksum_string (branch, NULL)) + { + char *key = g_strdup (branch); + g_hash_table_add (commits_to_fetch, key); + } + else + { + if (!ostree_validate_rev (branch, error)) + goto out; + char *commitid = commitid_strviter ? g_strdup (*commitid_strviter) : NULL; + g_hash_table_insert (requested_refs_to_fetch, + ostree_collection_ref_new (NULL, branch), commitid); + } - if (!pull_data->summary && !bytes_summary) - { - if (!_ostree_fetcher_mirrored_request_to_membuf (pull_data->fetcher, - pull_data->meta_mirrorlist, - "summary", OSTREE_FETCHER_REQUEST_OPTIONAL_CONTENT, - pull_data->n_network_retries, - &bytes_summary, - OSTREE_MAX_METADATA_SIZE, - cancellable, error)) + strviter++; + if (commitid_strviter) + commitid_strviter++; + } + } + else + { + char **branches_iter; + + branches_iter = configured_branches; + + if (!(branches_iter && *branches_iter)) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "No configured branches for remote %s", remote_name_or_baseurl); goto out; - } + } + for (;branches_iter && *branches_iter; branches_iter++) + { + const char *branch = *branches_iter; -#ifndef OSTREE_DISABLE_GPGME - if (!bytes_summary && pull_data->gpg_verify_summary) - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND, - "GPG verification enabled, but no summary found (use gpg-verify-summary=false in remote config to disable)"); + g_hash_table_insert (requested_refs_to_fetch, + ostree_collection_ref_new (NULL, branch), NULL); + } + } + + /* Deltas are necessary when mirroring or resolving a requested ref to a commit. + * We try to avoid loading the potentially large summary if it is not needed. */ + need_summary = require_summary_for_mirror || !all_requested_refs_have_commit (requested_refs_to_fetch) || summary_sig_bytes_v != NULL; + + /* If we don't have indexed deltas, we need the summary for deltas, so check + * the config file for support. + * NOTE: Avoid download if we don't need deltas */ + if (!need_summary && !pull_data->disable_static_deltas) + { + if (!load_remote_repo_config (pull_data, &remote_config, cancellable, error)) goto out; - } -#endif /* OSTREE_DISABLE_GPGME */ - if (!bytes_summary && pull_data->require_static_deltas) - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND, - "Fetch configured to require static deltas, but no summary found"); + /* Check if remote has delta indexes outside summary */ + if (!ot_keyfile_get_boolean_with_default (remote_config, "core", "indexed-deltas", FALSE, + &pull_data->has_indexed_deltas, error)) goto out; - } -#ifndef OSTREE_DISABLE_GPGME - if (!bytes_sig && pull_data->gpg_verify_summary) - { - g_set_error (error, OSTREE_GPG_ERROR, OSTREE_GPG_ERROR_NO_SIGNATURE, - "GPG verification enabled, but no summary.sig found (use gpg-verify-summary=false in remote config to disable)"); + if (!pull_data->has_indexed_deltas) + need_summary = TRUE; + } + + pull_data->static_delta_superblocks = g_ptr_array_new_with_free_func ((GDestroyNotify)g_variant_unref); + + if (need_summary) + { + g_autoptr(GBytes) bytes_sig = NULL; + gboolean summary_sig_not_modified = FALSE; + g_autofree char *summary_sig_etag = NULL; + guint64 summary_sig_last_modified = 0; + gsize n; + g_autoptr(GVariant) refs = NULL; + g_autoptr(GVariant) deltas = NULL; + g_autoptr(GVariant) additional_metadata = NULL; + gboolean summary_from_cache = FALSE; + gboolean tombstone_commits = FALSE; + + if (summary_sig_bytes_v) + { + /* Must both be specified */ + g_assert (summary_bytes_v); + + bytes_sig = g_variant_get_data_as_bytes (summary_sig_bytes_v); + bytes_summary = g_variant_get_data_as_bytes (summary_bytes_v); + + if (!bytes_sig || !bytes_summary) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "summary-bytes or summary-sig-bytes set to invalid value"); + goto out; + } + + g_debug ("Loaded %s summary from options", remote_name_or_baseurl); + } + + if (!bytes_sig) + { + g_autofree char *summary_sig_if_none_match = NULL; + guint64 summary_sig_if_modified_since = 0; + + /* Load the summary.sig from the network, but send its ETag and + * Last-Modified from the on-disk cache (if it exists) to reduce the + * download size if nothing’s changed. */ + _ostree_repo_load_cache_summary_properties (self, remote_name_or_baseurl, ".sig", + &summary_sig_if_none_match, &summary_sig_if_modified_since); + + g_clear_pointer (&summary_sig_etag, g_free); + summary_sig_last_modified = 0; + if (!_ostree_fetcher_mirrored_request_to_membuf (pull_data->fetcher, + pull_data->meta_mirrorlist, + "summary.sig", OSTREE_FETCHER_REQUEST_OPTIONAL_CONTENT, + summary_sig_if_none_match, summary_sig_if_modified_since, + pull_data->n_network_retries, + &bytes_sig, + &summary_sig_not_modified, &summary_sig_etag, &summary_sig_last_modified, + OSTREE_MAX_METADATA_SIZE, + cancellable, error)) + goto out; + + /* The server returned HTTP status 304 Not Modified, so we’re clear to + * load summary.sig from the cache. Also load summary, since + * `_ostree_repo_load_cache_summary_if_same_sig()` would just do that anyway. */ + if (summary_sig_not_modified) + { + g_clear_pointer (&bytes_sig, g_bytes_unref); + g_clear_pointer (&bytes_summary, g_bytes_unref); + if (!_ostree_repo_load_cache_summary_file (self, remote_name_or_baseurl, ".sig", + &bytes_sig, + cancellable, error)) + goto out; + + if (!bytes_summary && + !pull_data->remote_repo_local && + !_ostree_repo_load_cache_summary_file (self, remote_name_or_baseurl, NULL, + &bytes_summary, + cancellable, error)) + goto out; + } + } + + if (bytes_sig && + !bytes_summary && + !pull_data->remote_repo_local && + !_ostree_repo_load_cache_summary_if_same_sig (self, + remote_name_or_baseurl, + bytes_sig, + &bytes_summary, + cancellable, + error)) goto out; - } - if (pull_data->gpg_verify_summary && bytes_summary && bytes_sig) - { - g_autoptr(OstreeGpgVerifyResult) result = NULL; - g_autoptr(GError) temp_error = NULL; + if (bytes_summary && !summary_bytes_v) + { + g_debug ("Loaded %s summary from cache", remote_name_or_baseurl); + summary_from_cache = TRUE; + } - result = ostree_repo_verify_summary (self, pull_data->remote_name, - bytes_summary, bytes_sig, - cancellable, &temp_error); - if (!ostree_gpg_verify_result_require_valid_signature (result, &temp_error)) - { - if (summary_from_cache) - { - /* The cached summary doesn't match, fetch a new one and verify again */ - if ((self->test_error_flags & OSTREE_REPO_TEST_ERROR_INVALID_CACHE) > 0) - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "Remote %s cached summary invalid and " - "OSTREE_REPO_TEST_ERROR_INVALID_CACHE specified", - pull_data->remote_name); + if (!pull_data->summary && !bytes_summary) + { + g_autofree char *summary_if_none_match = NULL; + guint64 summary_if_modified_since = 0; + + _ostree_repo_load_cache_summary_properties (self, remote_name_or_baseurl, NULL, + &summary_if_none_match, &summary_if_modified_since); + + g_clear_pointer (&summary_etag, g_free); + summary_last_modified = 0; + + if (!_ostree_fetcher_mirrored_request_to_membuf (pull_data->fetcher, + pull_data->meta_mirrorlist, + "summary", OSTREE_FETCHER_REQUEST_OPTIONAL_CONTENT, + summary_if_none_match, summary_if_modified_since, + pull_data->n_network_retries, + &bytes_summary, + &summary_not_modified, &summary_etag, &summary_last_modified, + OSTREE_MAX_METADATA_SIZE, + cancellable, error)) + goto out; + + /* The server returned HTTP status 304 Not Modified, so we’re clear to + * load summary from the cache. */ + if (summary_not_modified) + { + g_clear_pointer (&bytes_summary, g_bytes_unref); + if (!_ostree_repo_load_cache_summary_file (self, remote_name_or_baseurl, NULL, + &bytes_summary, + cancellable, error)) + goto out; + } + } + +#ifndef OSTREE_DISABLE_GPGME + if (!bytes_summary && pull_data->gpg_verify_summary) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND, + "GPG verification enabled, but no summary found (use gpg-verify-summary=false in remote config to disable)"); + goto out; + } +#endif /* OSTREE_DISABLE_GPGME */ + + if (!bytes_summary && require_summary_for_mirror) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "Fetching all refs was requested in mirror mode, but remote repository does not have a summary"); + goto out; + } + +#ifndef OSTREE_DISABLE_GPGME + if (!bytes_sig && pull_data->gpg_verify_summary) + { + g_set_error (error, OSTREE_GPG_ERROR, OSTREE_GPG_ERROR_NO_SIGNATURE, + "GPG verification enabled, but no summary.sig found (use gpg-verify-summary=false in remote config to disable)"); + goto out; + } + + if (pull_data->gpg_verify_summary && bytes_summary && bytes_sig) + { + g_autoptr(OstreeGpgVerifyResult) result = NULL; + g_autoptr(GError) temp_error = NULL; + + result = ostree_repo_verify_summary (self, pull_data->remote_name, + bytes_summary, bytes_sig, + cancellable, &temp_error); + if (!ostree_gpg_verify_result_require_valid_signature (result, &temp_error)) + { + if (summary_from_cache) + { + /* The cached summary doesn't match, fetch a new one and verify again. + * Don’t set the cache headers in the HTTP request, to force a + * full download. */ + if ((self->test_error_flags & OSTREE_REPO_TEST_ERROR_INVALID_CACHE) > 0) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "Remote %s cached summary invalid and " + "OSTREE_REPO_TEST_ERROR_INVALID_CACHE specified", + pull_data->remote_name); + goto out; + } + else + g_debug ("Remote %s cached summary invalid, pulling new version", + pull_data->remote_name); + + summary_from_cache = FALSE; + g_clear_pointer (&bytes_summary, (GDestroyNotify)g_bytes_unref); + g_clear_pointer (&summary_etag, g_free); + summary_last_modified = 0; + if (!_ostree_fetcher_mirrored_request_to_membuf (pull_data->fetcher, + pull_data->meta_mirrorlist, + "summary", + OSTREE_FETCHER_REQUEST_OPTIONAL_CONTENT, + NULL, 0, /* no cache headers */ + pull_data->n_network_retries, + &bytes_summary, + &summary_not_modified, &summary_etag, &summary_last_modified, + OSTREE_MAX_METADATA_SIZE, + cancellable, error)) goto out; - } - else - g_debug ("Remote %s cached summary invalid, pulling new version", - pull_data->remote_name); - - summary_from_cache = FALSE; - g_clear_pointer (&bytes_summary, (GDestroyNotify)g_bytes_unref); - if (!_ostree_fetcher_mirrored_request_to_membuf (pull_data->fetcher, - pull_data->meta_mirrorlist, - "summary", - OSTREE_FETCHER_REQUEST_OPTIONAL_CONTENT, - pull_data->n_network_retries, - &bytes_summary, - OSTREE_MAX_METADATA_SIZE, - cancellable, error)) - goto out; - g_autoptr(OstreeGpgVerifyResult) retry = - ostree_repo_verify_summary (self, pull_data->remote_name, - bytes_summary, bytes_sig, - cancellable, error); - if (!ostree_gpg_verify_result_require_valid_signature (retry, error)) + g_autoptr(OstreeGpgVerifyResult) retry = + ostree_repo_verify_summary (self, pull_data->remote_name, + bytes_summary, bytes_sig, + cancellable, error); + if (!ostree_gpg_verify_result_require_valid_signature (retry, error)) + goto out; + } + else + { + g_propagate_error (error, g_steal_pointer (&temp_error)); goto out; - } - else - { - g_propagate_error (error, g_steal_pointer (&temp_error)); - goto out; - } - } - } + } + } + } #endif /* OSTREE_DISABLE_GPGME */ - if (pull_data->signapi_summary_verifiers) - { - if (!bytes_sig && pull_data->signapi_summary_verifiers) - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "Signatures verification enabled, but no summary.sig found (use sign-verify-summary=false in remote config to disable)"); - goto out; - } - if (bytes_summary && bytes_sig) - { - g_autoptr(GVariant) signatures = NULL; - g_autoptr(GError) temp_error = NULL; + if (pull_data->signapi_summary_verifiers) + { + if (!bytes_sig && pull_data->signapi_summary_verifiers) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "Signatures verification enabled, but no summary.sig found (use sign-verify-summary=false in remote config to disable)"); + goto out; + } + if (bytes_summary && bytes_sig) + { + g_autoptr(GVariant) signatures = NULL; + g_autoptr(GError) temp_error = NULL; - signatures = g_variant_new_from_bytes (OSTREE_SUMMARY_SIG_GVARIANT_FORMAT, - bytes_sig, FALSE); + signatures = g_variant_new_from_bytes (OSTREE_SUMMARY_SIG_GVARIANT_FORMAT, + bytes_sig, FALSE); + g_assert (pull_data->signapi_summary_verifiers); + if (!_sign_verify_for_remote (pull_data->signapi_summary_verifiers, bytes_summary, signatures, NULL, &temp_error)) + { + if (summary_from_cache) + { + /* The cached summary doesn't match, fetch a new one and verify again. + * Don’t set the cache headers in the HTTP request, to force a + * full download. */ + if ((self->test_error_flags & OSTREE_REPO_TEST_ERROR_INVALID_CACHE) > 0) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "Remote %s cached summary invalid and " + "OSTREE_REPO_TEST_ERROR_INVALID_CACHE specified", + pull_data->remote_name); + goto out; + } + else + g_debug ("Remote %s cached summary invalid, pulling new version", + pull_data->remote_name); - g_assert (pull_data->signapi_summary_verifiers); - if (!_sign_verify_for_remote (pull_data->signapi_summary_verifiers, bytes_summary, signatures, NULL, &temp_error)) - { - if (summary_from_cache) - { - /* The cached summary doesn't match, fetch a new one and verify again */ - if ((self->test_error_flags & OSTREE_REPO_TEST_ERROR_INVALID_CACHE) > 0) - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "Remote %s cached summary invalid and " - "OSTREE_REPO_TEST_ERROR_INVALID_CACHE specified", - pull_data->remote_name); + summary_from_cache = FALSE; + g_clear_pointer (&bytes_summary, (GDestroyNotify)g_bytes_unref); + g_clear_pointer (&summary_etag, g_free); + summary_last_modified = 0; + if (!_ostree_fetcher_mirrored_request_to_membuf (pull_data->fetcher, + pull_data->meta_mirrorlist, + "summary", + OSTREE_FETCHER_REQUEST_OPTIONAL_CONTENT, + NULL, 0, /* no cache headers */ + pull_data->n_network_retries, + &bytes_summary, + &summary_not_modified, &summary_etag, &summary_last_modified, + OSTREE_MAX_METADATA_SIZE, + cancellable, error)) goto out; - } - else - g_debug ("Remote %s cached summary invalid, pulling new version", - pull_data->remote_name); - - summary_from_cache = FALSE; - g_clear_pointer (&bytes_summary, (GDestroyNotify)g_bytes_unref); - if (!_ostree_fetcher_mirrored_request_to_membuf (pull_data->fetcher, - pull_data->meta_mirrorlist, - "summary", - OSTREE_FETCHER_REQUEST_OPTIONAL_CONTENT, - pull_data->n_network_retries, - &bytes_summary, - OSTREE_MAX_METADATA_SIZE, - cancellable, error)) - goto out; - if (!_sign_verify_for_remote (pull_data->signapi_summary_verifiers, bytes_summary, signatures, NULL, error)) + if (!_sign_verify_for_remote (pull_data->signapi_summary_verifiers, bytes_summary, signatures, NULL, error)) goto out; - } - else - { - g_propagate_error (error, g_steal_pointer (&temp_error)); - goto out; - } - } - } - } + } + else + { + g_propagate_error (error, g_steal_pointer (&temp_error)); + goto out; + } + } + } + } - if (bytes_summary) - { - pull_data->summary_data = g_bytes_ref (bytes_summary); - pull_data->summary = g_variant_new_from_bytes (OSTREE_SUMMARY_GVARIANT_FORMAT, bytes_summary, FALSE); + if (bytes_summary) + { + pull_data->summary_data = g_bytes_ref (bytes_summary); + pull_data->summary_etag = g_strdup (summary_etag); + pull_data->summary_last_modified = summary_last_modified; + pull_data->summary = g_variant_new_from_bytes (OSTREE_SUMMARY_GVARIANT_FORMAT, bytes_summary, FALSE); - if (!g_variant_is_normal_form (pull_data->summary)) - { - g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "Not normal form"); - goto out; - } - if (!g_variant_is_of_type (pull_data->summary, OSTREE_SUMMARY_GVARIANT_FORMAT)) - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "Doesn't match variant type '%s'", - (char *)OSTREE_SUMMARY_GVARIANT_FORMAT); + if (!g_variant_is_normal_form (pull_data->summary)) + { + g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "Not normal form"); + goto out; + } + if (!g_variant_is_of_type (pull_data->summary, OSTREE_SUMMARY_GVARIANT_FORMAT)) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "Doesn't match variant type '%s'", + (char *)OSTREE_SUMMARY_GVARIANT_FORMAT); + goto out; + } + + if (bytes_sig) + { + pull_data->summary_data_sig = g_bytes_ref (bytes_sig); + pull_data->summary_sig_etag = g_strdup (summary_sig_etag); + pull_data->summary_sig_last_modified = summary_sig_last_modified; + } + } + + if (!summary_from_cache && bytes_summary && bytes_sig && summary_sig_bytes_v == NULL) + { + if (!pull_data->remote_repo_local && + !_ostree_repo_cache_summary (self, + remote_name_or_baseurl, + bytes_summary, + summary_etag, summary_last_modified, + bytes_sig, + summary_sig_etag, summary_sig_last_modified, + cancellable, + error)) goto out; - } + } - if (bytes_sig) - pull_data->summary_data_sig = g_bytes_ref (bytes_sig); - } + if (pull_data->summary) + { + additional_metadata = g_variant_get_child_value (pull_data->summary, 1); - if (!summary_from_cache && bytes_summary && bytes_sig) - { - if (!pull_data->remote_repo_local && - !_ostree_repo_cache_summary (self, - remote_name_or_baseurl, - bytes_summary, - bytes_sig, - cancellable, - error)) - goto out; - } + if (!g_variant_lookup (additional_metadata, OSTREE_SUMMARY_COLLECTION_ID, "&s", &main_collection_id)) + main_collection_id = NULL; + else if (!ostree_validate_collection_id (main_collection_id, error)) + goto out; - if (pull_data->summary) - { - additional_metadata = g_variant_get_child_value (pull_data->summary, 1); + refs = g_variant_get_child_value (pull_data->summary, 0); + for (i = 0, n = g_variant_n_children (refs); i < n; i++) + { + const char *refname; + g_autoptr(GVariant) ref = g_variant_get_child_value (refs, i); - if (!g_variant_lookup (additional_metadata, OSTREE_SUMMARY_COLLECTION_ID, "&s", &main_collection_id)) - main_collection_id = NULL; - else if (!ostree_validate_collection_id (main_collection_id, error)) - goto out; + g_variant_get_child (ref, 0, "&s", &refname); - refs = g_variant_get_child_value (pull_data->summary, 0); - for (i = 0, n = g_variant_n_children (refs); i < n; i++) - { - const char *refname; - g_autoptr(GVariant) ref = g_variant_get_child_value (refs, i); + if (!ostree_validate_rev (refname, error)) + goto out; - g_variant_get_child (ref, 0, "&s", &refname); + if (pull_data->is_mirror && !refs_to_fetch && !opt_collection_refs_set) + { + g_hash_table_insert (requested_refs_to_fetch, + ostree_collection_ref_new (main_collection_id, refname), NULL); + } + } - if (!ostree_validate_rev (refname, error)) - goto out; + g_autoptr(GVariant) collection_map = NULL; + collection_map = g_variant_lookup_value (additional_metadata, OSTREE_SUMMARY_COLLECTION_MAP, G_VARIANT_TYPE ("a{sa(s(taya{sv}))}")); + if (collection_map != NULL) + { + GVariantIter collection_map_iter; + const char *collection_id; + g_autoptr(GVariant) collection_refs = NULL; - if (pull_data->is_mirror && !refs_to_fetch && !opt_collection_refs_set) - { - g_hash_table_insert (requested_refs_to_fetch, - ostree_collection_ref_new (main_collection_id, refname), NULL); - } - } + g_variant_iter_init (&collection_map_iter, collection_map); - g_autoptr(GVariant) collection_map = NULL; - collection_map = g_variant_lookup_value (additional_metadata, OSTREE_SUMMARY_COLLECTION_MAP, G_VARIANT_TYPE ("a{sa(s(taya{sv}))}")); - if (collection_map != NULL) - { - GVariantIter collection_map_iter; - const char *collection_id; - g_autoptr(GVariant) collection_refs = NULL; - - g_variant_iter_init (&collection_map_iter, collection_map); - - while (g_variant_iter_loop (&collection_map_iter, "{&s@a(s(taya{sv}))}", &collection_id, &collection_refs)) - { - if (!ostree_validate_collection_id (collection_id, error)) - goto out; + while (g_variant_iter_loop (&collection_map_iter, "{&s@a(s(taya{sv}))}", &collection_id, &collection_refs)) + { + if (!ostree_validate_collection_id (collection_id, error)) + goto out; - for (i = 0, n = g_variant_n_children (collection_refs); i < n; i++) - { - const char *refname; - g_autoptr(GVariant) ref = g_variant_get_child_value (collection_refs, i); + for (i = 0, n = g_variant_n_children (collection_refs); i < n; i++) + { + const char *refname; + g_autoptr(GVariant) ref = g_variant_get_child_value (collection_refs, i); - g_variant_get_child (ref, 0, "&s", &refname); + g_variant_get_child (ref, 0, "&s", &refname); - if (!ostree_validate_rev (refname, error)) - goto out; + if (!ostree_validate_rev (refname, error)) + goto out; - if (pull_data->is_mirror && !refs_to_fetch && !opt_collection_refs_set) - { - g_hash_table_insert (requested_refs_to_fetch, - ostree_collection_ref_new (collection_id, refname), NULL); - } - } - } - } + if (pull_data->is_mirror && !refs_to_fetch && !opt_collection_refs_set) + { + g_hash_table_insert (requested_refs_to_fetch, + ostree_collection_ref_new (collection_id, refname), NULL); + } + } + } + } - deltas = g_variant_lookup_value (additional_metadata, OSTREE_SUMMARY_STATIC_DELTAS, G_VARIANT_TYPE ("a{sv}")); - n = deltas ? g_variant_n_children (deltas) : 0; - for (i = 0; i < n; i++) - { - const char *delta; - g_autoptr(GVariant) csum_v = NULL; - g_autoptr(GVariant) ref = g_variant_get_child_value (deltas, i); + deltas = g_variant_lookup_value (additional_metadata, OSTREE_SUMMARY_STATIC_DELTAS, G_VARIANT_TYPE ("a{sv}")); + pull_data->summary_has_deltas = deltas != NULL && g_variant_n_children (deltas) > 0; + if (!collect_available_deltas_for_pull (pull_data, deltas, error)) + goto out; - g_variant_get_child (ref, 0, "&s", &delta); - g_variant_get_child (ref, 1, "v", &csum_v); + g_variant_lookup (additional_metadata, OSTREE_SUMMARY_INDEXED_DELTAS, "b", &pull_data->has_indexed_deltas); + } - if (!validate_variant_is_csum (csum_v, error)) - goto out; + if (pull_data->summary && + g_variant_lookup (additional_metadata, OSTREE_SUMMARY_MODE, "s", &remote_mode_str) && + g_variant_lookup (additional_metadata, OSTREE_SUMMARY_TOMBSTONE_COMMITS, "b", &tombstone_commits)) + { + if (!ostree_repo_mode_from_string (remote_mode_str, &pull_data->remote_mode, error)) + goto out; + pull_data->has_tombstone_commits = tombstone_commits; + remote_mode_loaded = TRUE; + } + } - guchar *csum_data = g_malloc (OSTREE_SHA256_DIGEST_LEN); - memcpy (csum_data, ostree_checksum_bytes_peek (csum_v), 32); - g_hash_table_insert (pull_data->summary_deltas_checksums, - g_strdup (delta), - csum_data); - } - } + if (pull_data->require_static_deltas && !pull_data->has_indexed_deltas && !pull_data->summary_has_deltas) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND, + "Fetch configured to require static deltas, but no summary deltas or delta index found"); + goto out; + } - if (pull_data->summary && - g_variant_lookup (additional_metadata, OSTREE_SUMMARY_MODE, "s", &remote_mode_str) && - g_variant_lookup (additional_metadata, OSTREE_SUMMARY_TOMBSTONE_COMMITS, "b", &tombstone_commits)) - { - if (!ostree_repo_mode_from_string (remote_mode_str, &pull_data->remote_mode, error)) - goto out; - pull_data->has_tombstone_commits = tombstone_commits; - remote_mode_loaded = TRUE; - } - else if (pull_data->remote_repo_local == NULL) + if (remote_mode_loaded && pull_data->remote_repo_local == NULL) { /* Fall-back path which loads the necessary config from the remote’s - * `config` file. Doing so is deprecated since it means an + * `config` file (unless we already read it above). Doing so is deprecated since it means an * additional round trip to the remote for each pull. No need to do * it for local pulls. */ - if (!load_remote_repo_config (pull_data, &remote_config, cancellable, error)) + if (remote_config == NULL && + !load_remote_repo_config (pull_data, &remote_config, cancellable, error)) goto out; if (!ot_keyfile_get_value_with_default (remote_config, "core", "mode", "bare", @@ -4180,85 +4670,12 @@ remote_mode_loaded = TRUE; } - if (remote_mode_loaded && pull_data->remote_repo_local == NULL && pull_data->remote_mode != OSTREE_REPO_MODE_ARCHIVE) - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "Can't pull from archives with mode \"%s\"", - remote_mode_str); - goto out; - } - } - - if (pull_data->is_mirror && !refs_to_fetch && !opt_collection_refs_set && !configured_branches) + if (remote_mode_loaded && pull_data->remote_repo_local == NULL && pull_data->remote_mode != OSTREE_REPO_MODE_ARCHIVE) { - if (!bytes_summary) - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "Fetching all refs was requested in mirror mode, but remote repository does not have a summary"); - goto out; - } - - } - else if (opt_collection_refs_set) - { - const gchar *collection_id, *ref_name, *checksum; - - while (g_variant_iter_loop (collection_refs_iter, "(&s&s&s)", &collection_id, &ref_name, &checksum)) - { - if (!ostree_validate_rev (ref_name, error)) - goto out; - g_hash_table_insert (requested_refs_to_fetch, - ostree_collection_ref_new (collection_id, ref_name), - (*checksum != '\0') ? g_strdup (checksum) : NULL); - } - } - else if (refs_to_fetch != NULL) - { - char **strviter = refs_to_fetch; - char **commitid_strviter = override_commit_ids ?: NULL; - - while (*strviter) - { - const char *branch = *strviter; - - if (ostree_validate_checksum_string (branch, NULL)) - { - char *key = g_strdup (branch); - g_hash_table_add (commits_to_fetch, key); - } - else - { - if (!ostree_validate_rev (branch, error)) - goto out; - char *commitid = commitid_strviter ? g_strdup (*commitid_strviter) : NULL; - g_hash_table_insert (requested_refs_to_fetch, - ostree_collection_ref_new (NULL, branch), commitid); - } - - strviter++; - if (commitid_strviter) - commitid_strviter++; - } - } - else - { - char **branches_iter; - - branches_iter = configured_branches; - - if (!(branches_iter && *branches_iter)) - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "No configured branches for remote %s", remote_name_or_baseurl); - goto out; - } - for (;branches_iter && *branches_iter; branches_iter++) - { - const char *branch = *branches_iter; - - g_hash_table_insert (requested_refs_to_fetch, - ostree_collection_ref_new (NULL, branch), NULL); - } + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "Can't pull from archives with mode \"%s\"", + remote_mode_str); + goto out; } /* Resolve the checksum for each ref. This has to be done into a new hash table, @@ -4494,6 +4911,9 @@ cancellable, error)) goto out; + store_file_cache_properties (pull_data->repo->repo_dir_fd, "summary", + pull_data->summary_etag, pull_data->summary_last_modified); + if (pull_data->summary_data_sig) { buf = g_bytes_get_data (pull_data->summary_data_sig, &len); @@ -4501,6 +4921,9 @@ buf, len, replaceflag, cancellable, error)) goto out; + + store_file_cache_properties (pull_data->repo->repo_dir_fd, "summary.sig", + pull_data->summary_sig_etag, pull_data->summary_sig_last_modified); } } @@ -4687,7 +5110,9 @@ g_clear_pointer (&pull_data->meta_mirrorlist, (GDestroyNotify) g_ptr_array_unref); g_clear_pointer (&pull_data->content_mirrorlist, (GDestroyNotify) g_ptr_array_unref); g_clear_pointer (&pull_data->summary_data, (GDestroyNotify) g_bytes_unref); + g_clear_pointer (&pull_data->summary_etag, g_free); g_clear_pointer (&pull_data->summary_data_sig, (GDestroyNotify) g_bytes_unref); + g_clear_pointer (&pull_data->summary_sig_etag, g_free); g_clear_pointer (&pull_data->summary, (GDestroyNotify) g_variant_unref); g_clear_pointer (&pull_data->static_delta_superblocks, (GDestroyNotify) g_ptr_array_unref); g_clear_pointer (&pull_data->commit_to_depth, (GDestroyNotify) g_hash_table_unref); @@ -4705,6 +5130,7 @@ g_clear_pointer (&pull_data->requested_metadata, (GDestroyNotify) g_hash_table_unref); g_clear_pointer (&pull_data->pending_fetch_content, (GDestroyNotify) g_hash_table_unref); g_clear_pointer (&pull_data->pending_fetch_metadata, (GDestroyNotify) g_hash_table_unref); + g_clear_pointer (&pull_data->pending_fetch_delta_indexes, (GDestroyNotify) g_hash_table_unref); g_clear_pointer (&pull_data->pending_fetch_delta_superblocks, (GDestroyNotify) g_hash_table_unref); g_clear_pointer (&pull_data->pending_fetch_deltaparts, (GDestroyNotify) g_hash_table_unref); g_queue_foreach (&pull_data->scan_object_queue, (GFunc) scan_object_queue_data_free, NULL); @@ -5499,8 +5925,10 @@ mirrorlist, commit_filename, OSTREE_FETCHER_REQUEST_OPTIONAL_CONTENT, + NULL, 0, data->n_network_retries, &commit_bytes, + NULL, NULL, NULL, 0, /* no maximum size */ cancellable, &error)) @@ -6114,6 +6542,16 @@ g_autoptr(GPtrArray) mirrorlist = NULL; const char *append_user_agent = NULL; guint n_network_retries = DEFAULT_N_NETWORK_RETRIES; + gboolean summary_sig_not_modified = FALSE; + g_autofree char *summary_sig_if_none_match = NULL; + g_autofree char *summary_sig_etag = NULL; + gboolean summary_not_modified = FALSE; + g_autofree char *summary_if_none_match = NULL; + g_autofree char *summary_etag = NULL; + guint64 summary_sig_if_modified_since = 0; + guint64 summary_sig_last_modified = 0; + guint64 summary_if_modified_since = 0; + guint64 summary_last_modified = 0; g_return_val_if_fail (OSTREE_REPO (self), FALSE); g_return_val_if_fail (name != NULL, FALSE); @@ -6159,22 +6597,48 @@ &mirrorlist, cancellable, error)) return FALSE; - /* FIXME: Send the ETag from the cache with the request for summary.sig to + /* Send the ETag from the cache with the request for summary.sig to * avoid downloading summary.sig unnecessarily. This won’t normally provide - * any benefits (but won’t do any harm) since summary.sig is typically 500B - * in size. But if a repository has multiple keys, the signature file will + * much benefit since summary.sig is typically 590B in size (vs a 0B HTTP 304 + * response). But if a repository has multiple keys, the signature file will * grow and this optimisation may be useful. */ + _ostree_repo_load_cache_summary_properties (self, name, ".sig", + &summary_sig_if_none_match, &summary_sig_if_modified_since); + _ostree_repo_load_cache_summary_properties (self, name, NULL, + &summary_if_none_match, &summary_if_modified_since); + if (!_ostree_preload_metadata_file (self, fetcher, mirrorlist, "summary.sig", metalink_url_string ? TRUE : FALSE, + summary_sig_if_none_match, summary_sig_if_modified_since, n_network_retries, &signatures, + &summary_sig_not_modified, &summary_sig_etag, &summary_sig_last_modified, cancellable, error)) return FALSE; + /* The server returned HTTP status 304 Not Modified, so we’re clear to + * load summary.sig from the cache. Also load summary, since + * `_ostree_repo_load_cache_summary_if_same_sig()` would just do that anyway. */ + if (summary_sig_not_modified) + { + g_clear_pointer (&signatures, g_bytes_unref); + g_clear_pointer (&summary, g_bytes_unref); + if (!_ostree_repo_load_cache_summary_file (self, name, ".sig", + &signatures, + cancellable, error)) + return FALSE; + + if (!summary && + !_ostree_repo_load_cache_summary_file (self, name, NULL, + &summary, + cancellable, error)) + return FALSE; + } + if (signatures) { if (!_ostree_repo_load_cache_summary_if_same_sig (self, @@ -6195,11 +6659,25 @@ mirrorlist, "summary", metalink_url_string ? TRUE : FALSE, + summary_if_none_match, summary_if_modified_since, n_network_retries, &summary, + &summary_not_modified, &summary_etag, &summary_last_modified, cancellable, error)) return FALSE; + + /* The server returned HTTP status 304 Not Modified, so we’re clear to + * load summary.sig from the cache. Also load summary, since + * `_ostree_repo_load_cache_summary_if_same_sig()` would just do that anyway. */ + if (summary_not_modified) + { + g_clear_pointer (&summary, g_bytes_unref); + if (!_ostree_repo_load_cache_summary_file (self, name, NULL, + &summary, + cancellable, error)) + return FALSE; + } } if (!_ostree_repo_verify_summary (self, name, @@ -6215,7 +6693,9 @@ if (!_ostree_repo_cache_summary (self, name, summary, + summary_etag, summary_last_modified, signatures, + summary_sig_etag, summary_sig_last_modified, cancellable, &temp_error)) { diff -Nru ostree-2020.7/src/libostree/ostree-repo-pull-private.h ostree-2020.8/src/libostree/ostree-repo-pull-private.h --- ostree-2020.7/src/libostree/ostree-repo-pull-private.h 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-repo-pull-private.h 2020-10-27 09:14:08.000000000 +0000 @@ -72,9 +72,15 @@ gboolean has_tombstone_commits; GBytes *summary_data; + char *summary_etag; + guint64 summary_last_modified; /* seconds since the epoch */ GBytes *summary_data_sig; + char *summary_sig_etag; + guint64 summary_sig_last_modified; /* seconds since the epoch */ GVariant *summary; - GHashTable *summary_deltas_checksums; + GHashTable *summary_deltas_checksums; /* Filled from summary and delta indexes */ + gboolean summary_has_deltas; /* True if the summary existed and had a delta index */ + gboolean has_indexed_deltas; GHashTable *ref_original_commits; /* Maps checksum to commit, used by timestamp checks */ GHashTable *verified_commits; /* Set of commits that have been verified */ GHashTable *signapi_verified_commits; /* Map of commits that have been signapi verified */ @@ -89,6 +95,7 @@ GHashTable *requested_fallback_content; /* Maps checksum to itself */ GHashTable *pending_fetch_metadata; /* Map */ GHashTable *pending_fetch_content; /* Map */ + GHashTable *pending_fetch_delta_indexes; /* Set */ GHashTable *pending_fetch_delta_superblocks; /* Set */ GHashTable *pending_fetch_deltaparts; /* Set */ guint n_outstanding_metadata_fetches; diff -Nru ostree-2020.7/src/libostree/ostree-repo-static-delta-compilation.c ostree-2020.8/src/libostree/ostree-repo-static-delta-compilation.c --- ostree-2020.7/src/libostree/ostree-repo-static-delta-compilation.c 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-repo-static-delta-compilation.c 2020-11-10 11:34:43.000000000 +0000 @@ -1313,10 +1313,10 @@ * ostree_repo_static_delta_generate: * @self: Repo * @opt: High level optimization choice - * @from: ASCII SHA256 checksum of origin, or %NULL + * @from: (nullable): ASCII SHA256 checksum of origin, or %NULL * @to: ASCII SHA256 checksum of target - * @metadata: (allow-none): Optional metadata - * @params: (allow-none): Parameters, see below + * @metadata: (nullable): Optional metadata + * @params: (nullable): Parameters, see below * @cancellable: Cancellable * @error: Error * diff -Nru ostree-2020.7/src/libostree/ostree-repo-static-delta-core.c ostree-2020.8/src/libostree/ostree-repo-static-delta-core.c --- ostree-2020.7/src/libostree/ostree-repo-static-delta-core.c 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-repo-static-delta-core.c 2020-10-27 09:14:08.000000000 +0000 @@ -168,6 +168,93 @@ return TRUE; } +/** + * ostree_repo_list_static_delta_indexes: + * @self: Repo + * @out_indexes: (out) (element-type utf8) (transfer container): String name of delta indexes (checksum) + * @cancellable: Cancellable + * @error: Error + * + * This function synchronously enumerates all static delta indexes in the + * repository, returning its result in @out_indexes. + * + * Since: 2020.7 + */ +gboolean +ostree_repo_list_static_delta_indexes (OstreeRepo *self, + GPtrArray **out_indexes, + GCancellable *cancellable, + GError **error) +{ + g_autoptr(GPtrArray) ret_indexes = g_ptr_array_new_with_free_func (g_free); + + g_auto(GLnxDirFdIterator) dfd_iter = { 0, }; + gboolean exists; + if (!ot_dfd_iter_init_allow_noent (self->repo_dir_fd, "delta-indexes", &dfd_iter, + &exists, error)) + return FALSE; + if (!exists) + { + /* Note early return */ + ot_transfer_out_value (out_indexes, &ret_indexes); + return TRUE; + } + + while (TRUE) + { + g_auto(GLnxDirFdIterator) sub_dfd_iter = { 0, }; + struct dirent *dent; + + if (!glnx_dirfd_iterator_next_dent_ensure_dtype (&dfd_iter, &dent, cancellable, error)) + return FALSE; + if (dent == NULL) + break; + if (dent->d_type != DT_DIR) + continue; + if (strlen (dent->d_name) != 2) + continue; + + if (!glnx_dirfd_iterator_init_at (dfd_iter.fd, dent->d_name, FALSE, + &sub_dfd_iter, error)) + return FALSE; + + while (TRUE) + { + struct dirent *sub_dent; + + if (!glnx_dirfd_iterator_next_dent_ensure_dtype (&sub_dfd_iter, &sub_dent, + cancellable, error)) + return FALSE; + if (sub_dent == NULL) + break; + if (sub_dent->d_type != DT_REG) + continue; + + const char *name1 = dent->d_name; + const char *name2 = sub_dent->d_name; + + /* base64 len is 43, but 2 chars are in the parent dir name */ + if (strlen (name2) != 41 + strlen(".index") || + !g_str_has_suffix (name2, ".index")) + continue; + + g_autoptr(GString) out = g_string_new (name1); + g_string_append_len (out, name2, 41); + + char checksum[OSTREE_SHA256_STRING_LEN+1]; + guchar csum[OSTREE_SHA256_DIGEST_LEN]; + + ostree_checksum_b64_inplace_to_bytes (out->str, csum); + ostree_checksum_inplace_from_bytes (csum, checksum); + + g_ptr_array_add (ret_indexes, g_strdup (checksum)); + } + } + + ot_transfer_out_value (out_indexes, &ret_indexes); + return TRUE; +} + gboolean _ostree_repo_static_delta_part_have_all_objects (OstreeRepo *repo, GVariant *checksum_array, @@ -508,7 +595,7 @@ */ delta_open_flags |= OSTREE_STATIC_DELTA_OPEN_FLAGS_SKIP_CHECKSUM; - if (!_ostree_static_delta_part_open (part_in, inline_part_bytes, + if (!_ostree_static_delta_part_open (part_in, inline_part_bytes, delta_open_flags, NULL, &part, @@ -1076,7 +1163,7 @@ * @self: Repo * @delta_id: delta path * @sign: Signature engine used to check superblock - * @out_success_message: success message + * @out_success_message: (out) (nullable) (optional): success message * @error: Error * * Verify static delta file signature. @@ -1118,3 +1205,207 @@ return _ostree_repo_static_delta_verify_signature (self, delta_fd, sign, out_success_message, error); } + +static void +null_or_ptr_array_unref (GPtrArray *array) +{ + if (array != NULL) + g_ptr_array_unref (array); +} + +static gboolean +file_has_content (OstreeRepo *repo, + const char *subpath, + GBytes *data, + GCancellable *cancellable) +{ + struct stat stbuf; + glnx_autofd int existing_fd = -1; + + if (!glnx_fstatat (repo->repo_dir_fd, subpath, &stbuf, 0, NULL)) + return FALSE; + + if (stbuf.st_size != g_bytes_get_size (data)) + return FALSE; + + if (!glnx_openat_rdonly (repo->repo_dir_fd, subpath, TRUE, &existing_fd, NULL)) + return FALSE; + + g_autoptr(GBytes) existing_data = glnx_fd_readall_bytes (existing_fd, cancellable, NULL); + if (existing_data == NULL) + return FALSE; + + return g_bytes_equal (existing_data, data); +} + +/** + * ostree_repo_static_delta_reindex: + * @repo: Repo + * @flags: Flags affecting the indexing operation + * @opt_to_commit: ASCII SHA256 checksum of target commit, or %NULL to index all targets + * @cancellable: Cancellable + * @error: Error + * + * The delta index for a particular commit lists all the existing deltas that can be used + * when downloading that commit. This operation regenerates these indexes, either for + * a particular commit (if @opt_to_commit is non-%NULL), or for all commits that + * are reachable by an existing delta (if @opt_to_commit is %NULL). + * + * This is normally called automatically when the summary is updated in ostree_repo_regenerate_summary(). + * + * Locking: shared + */ +gboolean +ostree_repo_static_delta_reindex (OstreeRepo *repo, + OstreeStaticDeltaIndexFlags flags, + const char *opt_to_commit, + GCancellable *cancellable, + GError **error) +{ + g_autoptr(GPtrArray) all_deltas = NULL; + g_autoptr(GHashTable) deltas_to_commit_ht = NULL; /* map: to checksum -> ptrarray of from checksums (or NULL) */ + gboolean opt_indexed_deltas; + + /* Protect against parallel prune operation */ + g_autoptr(OstreeRepoAutoLock) lock = + _ostree_repo_auto_lock_push (repo, OSTREE_REPO_LOCK_SHARED, cancellable, error); + if (!lock) + return FALSE; + + /* Enusre that the "indexed-deltas" option is set on the config, so we know this when pulling */ + if (!ot_keyfile_get_boolean_with_default (repo->config, "core", + "indexed-deltas", FALSE, + &opt_indexed_deltas, error)) + return FALSE; + + if (!opt_indexed_deltas) + { + g_autoptr(GKeyFile) config = ostree_repo_copy_config (repo); + g_key_file_set_boolean (config, "core", "indexed-deltas", TRUE); + if (!ostree_repo_write_config (repo, config, error)) + return FALSE; + } + + deltas_to_commit_ht = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify)null_or_ptr_array_unref); + + if (opt_to_commit == NULL) + { + g_autoptr(GPtrArray) old_indexes = NULL; + + /* To ensure all old index files either is regenerated, or + * removed, we initialize all existing indexes to NULL in the + * hashtable. */ + if (!ostree_repo_list_static_delta_indexes (repo, &old_indexes, cancellable, error)) + return FALSE; + + for (int i = 0; i < old_indexes->len; i++) + { + const char *old_index = g_ptr_array_index (old_indexes, i); + g_hash_table_insert (deltas_to_commit_ht, g_strdup (old_index), NULL); + } + } + else + { + if (!ostree_validate_checksum_string (opt_to_commit, error)) + return FALSE; + + /* We ensure the specific old index either is regenerated, or removed */ + g_hash_table_insert (deltas_to_commit_ht, g_strdup (opt_to_commit), NULL); + } + + if (!ostree_repo_list_static_delta_names (repo, &all_deltas, cancellable, error)) + return FALSE; + + for (int i = 0; i < all_deltas->len; i++) + { + const char *delta_name = g_ptr_array_index (all_deltas, i); + g_autofree char *from = NULL; + g_autofree char *to = NULL; + GPtrArray *deltas_to_commit = NULL; + + if (!_ostree_parse_delta_name (delta_name, &from, &to, error)) + return FALSE; + + if (opt_to_commit != NULL && strcmp (to, opt_to_commit) != 0) + continue; + + deltas_to_commit = g_hash_table_lookup (deltas_to_commit_ht, to); + if (deltas_to_commit == NULL) + { + deltas_to_commit = g_ptr_array_new_with_free_func (g_free); + g_hash_table_insert (deltas_to_commit_ht, g_steal_pointer (&to), deltas_to_commit); + } + + g_ptr_array_add (deltas_to_commit, g_steal_pointer (&from)); + } + + GLNX_HASH_TABLE_FOREACH_KV (deltas_to_commit_ht, const char*, to, GPtrArray*, froms) + { + g_autofree char *index_path = _ostree_get_relative_static_delta_index_path (to); + + if (froms == NULL) + { + /* No index to this checksum seen, delete if it exists */ + + g_debug ("Removing delta index for %s", to); + if (!ot_ensure_unlinked_at (repo->repo_dir_fd, index_path, error)) + return FALSE; + } + else + { + g_auto(GVariantDict) index_builder = OT_VARIANT_BUILDER_INITIALIZER; + g_auto(GVariantDict) deltas_builder = OT_VARIANT_BUILDER_INITIALIZER; + g_autoptr(GVariant) index_variant = NULL; + g_autoptr(GBytes) index = NULL; + + /* We sort on from here so that the index file is reproducible */ + g_ptr_array_sort (froms, (GCompareFunc)g_strcmp0); + + g_variant_dict_init (&deltas_builder, NULL); + + for (int i = 0; i < froms->len; i++) + { + const char *from = g_ptr_array_index (froms, i); + g_autofree char *delta_name = NULL; + GVariant *digest; + + digest = _ostree_repo_static_delta_superblock_digest (repo, from, to, cancellable, error); + if (digest == NULL) + return FALSE; + + if (from != NULL) + delta_name = g_strconcat (from, "-", to, NULL); + else + delta_name = g_strdup (to); + + g_variant_dict_insert_value (&deltas_builder, delta_name, digest); + } + + /* The toplevel of the index is an a{sv} for extensibility, and we use same key name (and format) as when + * storing deltas in the summary. */ + g_variant_dict_init (&index_builder, NULL); + + g_variant_dict_insert_value (&index_builder, OSTREE_SUMMARY_STATIC_DELTAS, g_variant_dict_end (&deltas_builder)); + + index_variant = g_variant_ref_sink (g_variant_dict_end (&index_builder)); + index = g_variant_get_data_as_bytes (index_variant); + + g_autofree char *index_dirname = g_path_get_dirname (index_path); + if (!glnx_shutil_mkdir_p_at (repo->repo_dir_fd, index_dirname, DEFAULT_DIRECTORY_MODE, cancellable, error)) + return FALSE; + + /* delta indexes are generally small and static, so reading it back and comparing is cheap, and it will + lower the write load (and particular sync-load) on the disk during reindexing (i.e. summary updates), */ + if (file_has_content (repo, index_path, index, cancellable)) + continue; + + g_debug ("Updating delta index for %s", to); + if (!glnx_file_replace_contents_at (repo->repo_dir_fd, index_path, + g_bytes_get_data (index, NULL), g_bytes_get_size (index), + 0, cancellable, error)) + return FALSE; + } + } + + return TRUE; +} diff -Nru ostree-2020.7/src/libostree/ostree-repo-static-delta-private.h ostree-2020.8/src/libostree/ostree-repo-static-delta-private.h --- ostree-2020.7/src/libostree/ostree-repo-static-delta-private.h 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-repo-static-delta-private.h 2020-10-27 09:14:08.000000000 +0000 @@ -227,6 +227,11 @@ const char *delta_id, GCancellable *cancellable, GError **error); +gboolean +_ostree_repo_static_delta_reindex (OstreeRepo *repo, + const char *opt_to_commit, + GCancellable *cancellable, + GError **error); /* Used for static deltas which due to a historical mistake are * inconsistent endian. diff -Nru ostree-2020.7/src/libostree/ostree-sysroot.c ostree-2020.8/src/libostree/ostree-sysroot.c --- ostree-2020.7/src/libostree/ostree-sysroot.c 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-sysroot.c 2020-11-16 10:25:18.000000000 +0000 @@ -36,6 +36,7 @@ #include "ostree-bootloader-uboot.h" #include "ostree-bootloader-syslinux.h" #include "ostree-bootloader-grub2.h" +#include "ostree-bootloader-zipl.h" /** * SECTION:ostree-sysroot @@ -256,9 +257,9 @@ /** * ostree_sysroot_get_path: - * @self: + * @self: Sysroot * - * Returns: (transfer none): Path to rootfs + * Returns: (transfer none) (not nullable): Path to rootfs */ GFile * ostree_sysroot_get_path (OstreeSysroot *self) @@ -1185,7 +1186,7 @@ * ostree_sysroot_get_booted_deployment: * @self: Sysroot * - * Returns: (transfer none): The currently booted deployment, or %NULL if none + * Returns: (transfer none) (nullable): The currently booted deployment, or %NULL if none */ OstreeDeployment * ostree_sysroot_get_booted_deployment (OstreeSysroot *self) @@ -1199,7 +1200,7 @@ * ostree_sysroot_get_staged_deployment: * @self: Sysroot * - * Returns: (transfer none): The currently staged deployment, or %NULL if none + * Returns: (transfer none) (nullable): The currently staged deployment, or %NULL if none * * Since: 2018.5 */ @@ -1237,7 +1238,7 @@ * to access, it, you must either use fd-relative api such as openat(), * or concatenate it with the full ostree_sysroot_get_path(). * - * Returns: (transfer full): Path to deployment root directory, relative to sysroot + * Returns: (transfer full) (not nullable): Path to deployment root directory, relative to sysroot */ char * ostree_sysroot_get_deployment_dirpath (OstreeSysroot *self, @@ -1312,7 +1313,7 @@ * returns a cached repository. Can only be called after ostree_sysroot_initialize() * or ostree_sysroot_load() has been invoked successfully. * - * Returns: (transfer none): The OSTree repository in sysroot @self. + * Returns: (transfer none) (not nullable): The OSTree repository in sysroot @self. * * Since: 2017.7 */ @@ -1324,10 +1325,38 @@ return self->repo; } +static OstreeBootloader* +_ostree_sysroot_new_bootloader_by_type ( + OstreeSysroot *sysroot, + OstreeCfgSysrootBootloaderOpt bl_type) +{ + switch (bl_type) + { + case CFG_SYSROOT_BOOTLOADER_OPT_NONE: + /* No bootloader specified; do not query bootloaders to run. */ + return NULL; + case CFG_SYSROOT_BOOTLOADER_OPT_GRUB2: + return (OstreeBootloader*) _ostree_bootloader_grub2_new (sysroot); + case CFG_SYSROOT_BOOTLOADER_OPT_SYSLINUX: + return (OstreeBootloader*) _ostree_bootloader_syslinux_new (sysroot); + case CFG_SYSROOT_BOOTLOADER_OPT_UBOOT: + return (OstreeBootloader*) _ostree_bootloader_uboot_new (sysroot); + case CFG_SYSROOT_BOOTLOADER_OPT_ZIPL: + /* We never consider zipl as active by default, so it can only be created + * if it's explicitly requested in the config */ + return (OstreeBootloader*) _ostree_bootloader_zipl_new (sysroot); + case CFG_SYSROOT_BOOTLOADER_OPT_AUTO: + /* "auto" is handled by ostree_sysroot_query_bootloader so we should + * never get here: Fallthrough */ + default: + g_assert_not_reached (); + } +} + /** * ostree_sysroot_query_bootloader: * @sysroot: Sysroot - * @out_bootloader: (out) (transfer full) (allow-none): Return location for bootloader, may be %NULL + * @out_bootloader: (out) (transfer full) (optional) (nullable): Return location for bootloader, may be %NULL * @cancellable: Cancellable * @error: Error */ @@ -1337,32 +1366,38 @@ GCancellable *cancellable, GError **error) { - gboolean is_active; - g_autoptr(OstreeBootloader) ret_loader = - (OstreeBootloader*)_ostree_bootloader_syslinux_new (sysroot); - if (!_ostree_bootloader_query (ret_loader, &is_active, - cancellable, error)) - return FALSE; + OstreeRepo *repo = ostree_sysroot_repo (sysroot); + OstreeCfgSysrootBootloaderOpt bootloader_config = repo->bootloader; - if (!is_active) - { - g_object_unref (ret_loader); - ret_loader = (OstreeBootloader*)_ostree_bootloader_grub2_new (sysroot); - if (!_ostree_bootloader_query (ret_loader, &is_active, - cancellable, error)) - return FALSE; - } - if (!is_active) + g_debug ("Using bootloader configuration: %s", + CFG_SYSROOT_BOOTLOADER_OPTS_STR[bootloader_config]); + + g_autoptr(OstreeBootloader) ret_loader = NULL; + if (bootloader_config == CFG_SYSROOT_BOOTLOADER_OPT_AUTO) { - g_object_unref (ret_loader); - ret_loader = (OstreeBootloader*)_ostree_bootloader_uboot_new (sysroot); - if (!_ostree_bootloader_query (ret_loader, &is_active, cancellable, error)) - return FALSE; + OstreeCfgSysrootBootloaderOpt probe[] = { + CFG_SYSROOT_BOOTLOADER_OPT_SYSLINUX, + CFG_SYSROOT_BOOTLOADER_OPT_GRUB2, + CFG_SYSROOT_BOOTLOADER_OPT_UBOOT, + }; + for (int i = 0; i < G_N_ELEMENTS (probe); i++) + { + g_autoptr(OstreeBootloader) bl = _ostree_sysroot_new_bootloader_by_type ( + sysroot, probe[i]); + gboolean is_active = FALSE; + if (!_ostree_bootloader_query (bl, &is_active, cancellable, error)) + return FALSE; + if (is_active) + { + ret_loader = g_steal_pointer (&bl); + break; + } + } } - if (!is_active) - g_clear_object (&ret_loader); + else + ret_loader = _ostree_sysroot_new_bootloader_by_type (sysroot, bootloader_config); - ot_transfer_out_value(out_bootloader, &ret_loader); + ot_transfer_out_value (out_bootloader, &ret_loader) return TRUE; } @@ -1393,8 +1428,8 @@ * ostree_sysroot_query_deployments_for: * @self: Sysroot * @osname: (allow-none): "stateroot" name - * @out_pending: (out) (allow-none) (transfer full): The pending deployment - * @out_rollback: (out) (allow-none) (transfer full): The rollback deployment + * @out_pending: (out) (nullable) (optional) (transfer full): The pending deployment + * @out_rollback: (out) (nullable) (optional) (transfer full): The rollback deployment * * Find the pending and rollback deployments for @osname. Pass %NULL for @osname * to use the booted deployment's osname. By default, pending deployment is the @@ -1454,7 +1489,7 @@ * Find the deployment to use as a configuration merge source; this is * the first one in the current deployment list which matches osname. * - * Returns: (transfer full): Configuration merge deployment + * Returns: (transfer full) (nullable): Configuration merge deployment */ OstreeDeployment * ostree_sysroot_get_merge_deployment (OstreeSysroot *self, @@ -1485,7 +1520,7 @@ * @self: Sysroot * @refspec: A refspec * - * Returns: (transfer full): A new config file which sets @refspec as an origin + * Returns: (transfer full) (not nullable): A new config file which sets @refspec as an origin */ GKeyFile * ostree_sysroot_origin_new_from_refspec (OstreeSysroot *self, diff -Nru ostree-2020.7/src/libostree/ostree-sysroot-deploy.c ostree-2020.8/src/libostree/ostree-sysroot-deploy.c --- ostree-2020.7/src/libostree/ostree-sysroot-deploy.c 2020-10-14 00:04:08.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-sysroot-deploy.c 2020-11-03 12:17:16.000000000 +0000 @@ -44,7 +44,6 @@ #include "ostree-repo-private.h" #include "ostree-sysroot-private.h" #include "ostree-sepolicy-private.h" -#include "ostree-bootloader-zipl.h" #include "ostree-deployment-private.h" #include "ostree-core-private.h" #include "ostree-linuxfsutil.h" @@ -2561,7 +2560,6 @@ gboolean bootloader_is_atomic = FALSE; SyncStats syncstats = { 0, }; g_autoptr(OstreeBootloader) bootloader = NULL; - const char *bootloader_config = NULL; if (!requires_new_bootversion) { if (!create_new_bootlinks (self, self->bootversion, @@ -2593,29 +2591,8 @@ return glnx_throw_errno_prefix (error, "Remounting /boot read-write"); } - OstreeRepo *repo = ostree_sysroot_repo (self); - - bootloader_config = ostree_repo_get_bootloader (repo); - - g_debug ("Using bootloader configuration: %s", bootloader_config); - - if (g_str_equal (bootloader_config, "auto")) - { - if (!_ostree_sysroot_query_bootloader (self, &bootloader, cancellable, error)) - return FALSE; - } - else if (g_str_equal (bootloader_config, "none")) - { - /* No bootloader specified; do not query bootloaders to run. */ - } - else if (g_str_equal (bootloader_config, "zipl")) - { - /* Because we do not mark zipl as active by default, lets creating one here, - * which is basically the same what _ostree_sysroot_query_bootloader() does - * for other bootloaders if being activated. - * */ - bootloader = (OstreeBootloader*) _ostree_bootloader_zipl_new (self); - } + if (!_ostree_sysroot_query_bootloader (self, &bootloader, cancellable, error)) + return FALSE; bootloader_is_atomic = bootloader != NULL && _ostree_bootloader_is_atomic (bootloader); @@ -2646,6 +2623,7 @@ (bootloader_is_atomic ? "Transaction complete" : "Bootloader updated"), requires_new_bootversion ? "yes" : "no", new_deployments->len - self->deployments->len); + const gchar *bootloader_config = ostree_repo_get_bootloader (ostree_sysroot_repo (self)); ot_journal_send ("MESSAGE_ID=" SD_ID128_FORMAT_STR, SD_ID128_FORMAT_VAL(OSTREE_DEPLOYMENT_COMPLETE_ID), "MESSAGE=%s", msg, "OSTREE_BOOTLOADER=%s", bootloader ? _ostree_bootloader_get_name (bootloader) : "none", @@ -3046,7 +3024,7 @@ /** * ostree_sysroot_stage_overlay_initrd: * @self: Sysroot - * @fd: (transfer none): File descriptor to overlay initrd + * @fd: File descriptor to overlay initrd * @out_checksum: (out) (transfer full): Overlay initrd checksum * @cancellable: Cancellable * @error: Error diff -Nru ostree-2020.7/src/libostree/ostree-sysroot-upgrader.c ostree-2020.8/src/libostree/ostree-sysroot-upgrader.c --- ostree-2020.7/src/libostree/ostree-sysroot-upgrader.c 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-sysroot-upgrader.c 2020-11-10 11:34:43.000000000 +0000 @@ -682,9 +682,9 @@ GType ostree_sysroot_upgrader_flags_get_type (void) { - static volatile gsize g_define_type_id__volatile = 0; + static gsize static_g_define_type_id = 0; - if (g_once_init_enter (&g_define_type_id__volatile)) + if (g_once_init_enter (&static_g_define_type_id)) { static const GFlagsValue values[] = { { OSTREE_SYSROOT_UPGRADER_FLAGS_IGNORE_UNCONFIGURED, "OSTREE_SYSROOT_UPGRADER_FLAGS_IGNORE_UNCONFIGURED", "ignore-unconfigured" }, @@ -692,8 +692,8 @@ }; GType g_define_type_id = g_flags_register_static (g_intern_static_string ("OstreeSysrootUpgraderFlags"), values); - g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + g_once_init_leave (&static_g_define_type_id, g_define_type_id); } - return g_define_type_id__volatile; + return static_g_define_type_id; } diff -Nru ostree-2020.7/src/libostree/ostree-version.h ostree-2020.8/src/libostree/ostree-version.h --- ostree-2020.7/src/libostree/ostree-version.h 2020-10-14 00:05:57.000000000 +0000 +++ ostree-2020.8/src/libostree/ostree-version.h 2020-11-17 15:31:58.000000000 +0000 @@ -43,7 +43,7 @@ * * Since: 2017.4 */ -#define OSTREE_RELEASE_VERSION (7) +#define OSTREE_RELEASE_VERSION (8) /** * OSTREE_VERSION @@ -52,7 +52,7 @@ * * Since: 2017.4 */ -#define OSTREE_VERSION (2020.7) +#define OSTREE_VERSION (2020.8) /** * OSTREE_VERSION_S: @@ -62,7 +62,7 @@ * * Since: 2017.4 */ -#define OSTREE_VERSION_S "2020.7" +#define OSTREE_VERSION_S "2020.8" #define OSTREE_ENCODE_VERSION(year,release) \ ((year) << 16 | (release)) @@ -100,4 +100,4 @@ * * Since: 2019.3 */ -#define OSTREE_BUILT_FEATURES "libcurl libsoup gpgme ex-fsverity libarchive selinux openssl libmount systemd release p2p" +#define OSTREE_BUILT_FEATURES "libsoup gpgme ex-fsverity libarchive selinux avahi libmount systemd release p2p" diff -Nru ostree-2020.7/src/ostree/ostree-trivial-httpd.c ostree-2020.8/src/ostree/ostree-trivial-httpd.c --- ostree-2020.7/src/ostree/ostree-trivial-httpd.c 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/ostree/ostree-trivial-httpd.c 2020-10-27 09:14:08.000000000 +0000 @@ -206,6 +206,15 @@ #endif } +/* Returns the ETag including the surrounding quotes */ +static gchar * +calculate_etag (GMappedFile *mapping) +{ + g_autoptr(GBytes) bytes = g_mapped_file_get_bytes (mapping); + g_autofree gchar *checksum = g_compute_checksum_for_bytes (G_CHECKSUM_SHA256, bytes); + return g_strconcat ("\"", checksum, "\"", NULL); +} + static void do_get (OtTrivialHttpd *self, SoupServer *server, @@ -367,31 +376,41 @@ soup_message_set_status (msg, SOUP_STATUS_FORBIDDEN); goto out; } + + glnx_autofd int fd = openat (self->root_dfd, path, O_RDONLY | O_CLOEXEC); + if (fd < 0) + { + soup_message_set_status (msg, SOUP_STATUS_INTERNAL_SERVER_ERROR); + goto out; + } + + g_autoptr(GMappedFile) mapping = g_mapped_file_new_from_fd (fd, FALSE, NULL); + if (!mapping) + { + soup_message_set_status (msg, SOUP_STATUS_INTERNAL_SERVER_ERROR); + goto out; + } + (void) close (fd); fd = -1; + + /* Send caching headers */ + g_autoptr(GDateTime) last_modified = g_date_time_new_from_unix_utc (stbuf.st_mtim.tv_sec); + if (last_modified != NULL) + { + g_autofree gchar *formatted = g_date_time_format (last_modified, "%a, %d %b %Y %H:%M:%S GMT"); + soup_message_headers_append (msg->response_headers, "Last-Modified", formatted); + } + + g_autofree gchar *etag = calculate_etag (mapping); + if (etag != NULL) + soup_message_headers_append (msg->response_headers, "ETag", etag); if (msg->method == SOUP_METHOD_GET) { - glnx_autofd int fd = -1; - g_autoptr(GMappedFile) mapping = NULL; gsize buffer_length, file_size; SoupRange *ranges; int ranges_length; gboolean have_ranges; - fd = openat (self->root_dfd, path, O_RDONLY | O_CLOEXEC); - if (fd < 0) - { - soup_message_set_status (msg, SOUP_STATUS_INTERNAL_SERVER_ERROR); - goto out; - } - - mapping = g_mapped_file_new_from_fd (fd, FALSE, NULL); - if (!mapping) - { - soup_message_set_status (msg, SOUP_STATUS_INTERNAL_SERVER_ERROR); - goto out; - } - (void) close (fd); fd = -1; - file_size = g_mapped_file_get_length (mapping); have_ranges = soup_message_headers_get_ranges(msg->request_headers, file_size, &ranges, &ranges_length); if (opt_force_ranges && !have_ranges && g_strrstr (path, "/objects") != NULL) @@ -447,7 +466,50 @@ soup_message_headers_append (msg->response_headers, "Content-Length", length); } - soup_message_set_status (msg, SOUP_STATUS_OK); + + /* Check client’s caching headers. */ + const gchar *if_modified_since = soup_message_headers_get_one (msg->request_headers, + "If-Modified-Since"); + const gchar *if_none_match = soup_message_headers_get_one (msg->request_headers, + "If-None-Match"); + + if (if_none_match != NULL && etag != NULL) + { + if (g_strcmp0 (etag, if_none_match) == 0) + { + soup_message_set_status (msg, SOUP_STATUS_NOT_MODIFIED); + soup_message_body_truncate (msg->response_body); + } + else + { + soup_message_set_status (msg, SOUP_STATUS_OK); + } + } + else if (if_modified_since != NULL && last_modified != NULL) + { + SoupDate *if_modified_since_sd = soup_date_new_from_string (if_modified_since); + g_autoptr(GDateTime) if_modified_since_dt = NULL; + + if (if_modified_since_sd != NULL) + if_modified_since_dt = g_date_time_new_from_unix_utc (soup_date_to_time_t (if_modified_since_sd)); + + if (if_modified_since_dt != NULL && + g_date_time_compare (last_modified, if_modified_since_dt) <= 0) + { + soup_message_set_status (msg, SOUP_STATUS_NOT_MODIFIED); + soup_message_body_truncate (msg->response_body); + } + else + { + soup_message_set_status (msg, SOUP_STATUS_OK); + } + + g_clear_pointer (&if_modified_since_sd, soup_date_free); + } + else + { + soup_message_set_status (msg, SOUP_STATUS_OK); + } } out: { diff -Nru ostree-2020.7/src/ostree/ot-builtin-checkout.c ostree-2020.8/src/ostree/ot-builtin-checkout.c --- ostree-2020.7/src/ostree/ot-builtin-checkout.c 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/ostree/ot-builtin-checkout.c 2020-11-16 10:25:18.000000000 +0000 @@ -123,8 +123,6 @@ GCancellable *cancellable, GError **error) { - gboolean ret = FALSE; - /* This strange code structure is to preserve testing * coverage of both `ostree_repo_checkout_tree` and * `ostree_repo_checkout_at` until such time as we have a more @@ -145,33 +143,15 @@ checkout_options.mode = OSTREE_REPO_CHECKOUT_MODE_USER; /* Can't union these */ if (opt_union && opt_union_add) - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "Cannot specify both --union and --union-add"); - goto out; - } + return glnx_throw (error, "Cannot specify both --union and --union-add"); if (opt_union && opt_union_identical) - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "Cannot specify both --union and --union-identical"); - goto out; - } + return glnx_throw (error, "Cannot specify both --union and --union-identical"); if (opt_union_add && opt_union_identical) - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "Cannot specify both --union-add and --union-identical "); - goto out; - } + return glnx_throw (error, "Cannot specify both --union-add and --union-identical"); if (opt_require_hardlinks && opt_force_copy) - { - glnx_throw (error, "Cannot specify both --require-hardlinks and --force-copy"); - goto out; - } + return glnx_throw (error, "Cannot specify both --require-hardlinks and --force-copy"); if (opt_selinux_prefix && !opt_selinux_policy) - { - glnx_throw (error, "Cannot specify --selinux-prefix without --selinux-policy"); - goto out; - } + return glnx_throw (error, "Cannot specify --selinux-prefix without --selinux-policy"); else if (opt_union) checkout_options.overwrite_mode = OSTREE_REPO_CHECKOUT_OVERWRITE_UNION_FILES; else if (opt_union_add) @@ -179,11 +159,7 @@ else if (opt_union_identical) { if (!opt_require_hardlinks) - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "--union-identical requires --require-hardlinks"); - goto out; - } + return glnx_throw (error, "--union-identical requires --require-hardlinks"); checkout_options.overwrite_mode = OSTREE_REPO_CHECKOUT_OVERWRITE_UNION_IDENTICAL; } if (opt_whiteouts) @@ -196,13 +172,10 @@ { glnx_autofd int rootfs_dfd = -1; if (!glnx_opendirat (AT_FDCWD, opt_selinux_policy, TRUE, &rootfs_dfd, error)) - { - g_prefix_error (error, "selinux-policy: "); - goto out; - } + return glnx_prefix_error (error, "selinux-policy: "); policy = ostree_sepolicy_new_at (rootfs_dfd, cancellable, error); if (!policy) - goto out; + return FALSE; checkout_options.sepolicy = policy; checkout_options.sepolicy_prefix = opt_selinux_prefix; } @@ -213,7 +186,7 @@ { if (!ot_parse_file_by_line (opt_skiplist_file, handle_skiplist_line, skip_list, cancellable, error)) - goto out; + return FALSE; checkout_options.filter = checkout_filter; checkout_options.filter_user_data = skip_list; } @@ -227,25 +200,25 @@ AT_FDCWD, destination, resolved_commit, cancellable, error)) - goto out; + return FALSE; } else { GError *tmp_error = NULL; g_autoptr(GFile) root = NULL; - g_autoptr(GFile) subtree = NULL; - g_autoptr(GFileInfo) file_info = NULL; g_autoptr(GFile) destination_file = g_file_new_for_path (destination); if (!ostree_repo_read_commit (repo, resolved_commit, &root, NULL, cancellable, error)) - goto out; + return FALSE; + g_autoptr(GFile) subtree = NULL; if (subpath) subtree = g_file_resolve_relative_path (root, subpath); else subtree = g_object_ref (root); - file_info = g_file_query_info (subtree, OSTREE_GIO_FAST_QUERYINFO, + g_autoptr(GFileInfo) file_info + = g_file_query_info (subtree, OSTREE_GIO_FAST_QUERYINFO, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, cancellable, &tmp_error); if (!file_info) @@ -254,13 +227,14 @@ && g_error_matches (tmp_error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) { g_clear_error (&tmp_error); - ret = TRUE; + /* Note early return */ + return TRUE; } else { g_propagate_error (error, tmp_error); + return FALSE; } - goto out; } if (!ostree_repo_checkout_tree (repo, opt_user_mode ? OSTREE_REPO_CHECKOUT_MODE_USER : 0, @@ -268,12 +242,10 @@ destination_file, OSTREE_REPO_FILE (subtree), file_info, cancellable, error)) - goto out; + return FALSE; } - ret = TRUE; - out: - return ret; + return TRUE; } static gboolean @@ -352,56 +324,46 @@ gboolean ostree_builtin_checkout (int argc, char **argv, OstreeCommandInvocation *invocation, GCancellable *cancellable, GError **error) { - g_autoptr(GOptionContext) context = NULL; + g_autoptr(GOptionContext) context = g_option_context_new ("COMMIT [DESTINATION]"); g_autoptr(OstreeRepo) repo = NULL; - gboolean ret = FALSE; - const char *commit; - const char *destination; - g_autofree char *resolved_commit = NULL; - - context = g_option_context_new ("COMMIT [DESTINATION]"); - if (!ostree_option_context_parse (context, options, &argc, &argv, invocation, &repo, cancellable, error)) - goto out; + return FALSE; if (opt_disable_fsync) ostree_repo_set_disable_fsync (repo, TRUE); if (argc < 2) { - gchar *help = g_option_context_get_help (context, TRUE, NULL); + g_autofree char *help = g_option_context_get_help (context, TRUE, NULL); g_printerr ("%s\n", help); - g_free (help); - g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "COMMIT must be specified"); - goto out; + return glnx_throw (error, "COMMIT must be specified"); } if (opt_from_stdin || opt_from_file) { - destination = argv[1]; + const char *destination = argv[1]; if (!process_many_checkouts (repo, destination, cancellable, error)) - goto out; + return FALSE; } else { - commit = argv[1]; + const char *commit = argv[1]; + const char *destination; if (argc < 3) destination = commit; else destination = argv[2]; + g_autofree char *resolved_commit = NULL; if (!ostree_repo_resolve_rev (repo, commit, FALSE, &resolved_commit, error)) - goto out; + return FALSE; if (!process_one_checkout (repo, resolved_commit, opt_subpath, destination, cancellable, error)) - goto out; + return FALSE; } - ret = TRUE; - out: - return ret; + return TRUE; } diff -Nru ostree-2020.7/src/ostree/ot-builtin-static-delta.c ostree-2020.8/src/ostree/ot-builtin-static-delta.c --- ostree-2020.7/src/ostree/ot-builtin-static-delta.c 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/ostree/ot-builtin-static-delta.c 2020-10-27 09:14:08.000000000 +0000 @@ -53,6 +53,8 @@ BUILTINPROTO(generate); BUILTINPROTO(apply_offline); BUILTINPROTO(verify); +BUILTINPROTO(indexes); +BUILTINPROTO(reindex); #undef BUILTINPROTO @@ -75,6 +77,12 @@ { "verify", OSTREE_BUILTIN_FLAG_NONE, ot_static_delta_builtin_verify, "Verify static delta signatures" }, + { "indexes", OSTREE_BUILTIN_FLAG_NONE, + ot_static_delta_builtin_indexes, + "List static delta indexes" }, + { "reindex", OSTREE_BUILTIN_FLAG_NONE, + ot_static_delta_builtin_reindex, + "Regenerate static delta indexes" }, { NULL, 0, NULL, NULL } }; @@ -126,6 +134,15 @@ { NULL } }; +static GOptionEntry indexes_options[] = { + { NULL } +}; + +static GOptionEntry reindex_options[] = { + { "to", 0, 0, G_OPTION_ARG_STRING, &opt_to_rev, "Only update delta index to revision REV", "REV" }, + { NULL } +}; + static void static_delta_usage (char **argv, gboolean is_error) @@ -177,6 +194,46 @@ } static gboolean +ot_static_delta_builtin_indexes (int argc, char **argv, OstreeCommandInvocation *invocation, GCancellable *cancellable, GError **error) +{ + g_autoptr(OstreeRepo) repo = NULL; + g_autoptr(GOptionContext) context = g_option_context_new (""); + if (!ostree_option_context_parse (context, indexes_options, &argc, &argv, + invocation, &repo, cancellable, error)) + return FALSE; + + g_autoptr(GPtrArray) indexes = NULL; + if (!ostree_repo_list_static_delta_indexes (repo, &indexes, cancellable, error)) + return FALSE; + + if (indexes->len == 0) + g_print ("(No static deltas indexes)\n"); + else + { + for (guint i = 0; i < indexes->len; i++) + g_print ("%s\n", (char*)indexes->pdata[i]); + } + + return TRUE; +} + +static gboolean +ot_static_delta_builtin_reindex (int argc, char **argv, OstreeCommandInvocation *invocation, GCancellable *cancellable, GError **error) +{ + g_autoptr(GOptionContext) context = g_option_context_new (""); + + g_autoptr(OstreeRepo) repo = NULL; + if (!ostree_option_context_parse (context, reindex_options, &argc, &argv, invocation, &repo, cancellable, error)) + return FALSE; + + if (!ostree_repo_static_delta_reindex (repo, 0, opt_to_rev, cancellable, error)) + return FALSE; + + return TRUE; +} + + +static gboolean ot_static_delta_builtin_show (int argc, char **argv, OstreeCommandInvocation *invocation, GCancellable *cancellable, GError **error) { diff -Nru ostree-2020.7/src/switchroot/ostree-prepare-root.c ostree-2020.8/src/switchroot/ostree-prepare-root.c --- ostree-2020.7/src/switchroot/ostree-prepare-root.c 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/src/switchroot/ostree-prepare-root.c 2020-10-27 09:14:08.000000000 +0000 @@ -152,8 +152,8 @@ "MESSAGE_ID=" SD_ID128_FORMAT_STR, SD_ID128_FORMAT_VAL(OSTREE_PREPARE_ROOT_DEPLOYMENT_MSG), "DEPLOYMENT_PATH=%s", resolved_path, - "DEPLOYMENT_DEVICE=%u", stbuf.st_dev, - "DEPLOYMENT_INODE=%u", stbuf.st_ino, + "DEPLOYMENT_DEVICE=%" PRIu64, (uint64_t) stbuf.st_dev, + "DEPLOYMENT_INODE=%" PRIu64, (uint64_t) stbuf.st_ino, NULL); #endif return deploy_path; diff -Nru ostree-2020.7/tests/bootloader-entries-crosscheck.py ostree-2020.8/tests/bootloader-entries-crosscheck.py --- ostree-2020.7/tests/bootloader-entries-crosscheck.py 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/tests/bootloader-entries-crosscheck.py 2020-11-03 12:17:16.000000000 +0000 @@ -20,113 +20,118 @@ import os import sys -if len(sys.argv) == 1: - sysroot = '' -else: - sysroot = sys.argv[1] - -bootloader = sys.argv[2] -loaderpath = sysroot + '/boot/loader/entries' -syslinuxpath = sysroot + '/boot/syslinux/syslinux.cfg' - -if bootloader == "grub2": - sys.stdout.write('GRUB2 configuration validation not implemented.\n') - sys.exit(0) + +def main(argv): + _, sysroot, bootloader = argv + + if bootloader == "grub2": + sys.stdout.write('GRUB2 configuration validation not implemented.\n') + return 0 + else: + return validate_syslinux(sysroot) + def fatal(msg): sys.stderr.write(msg) sys.stderr.write('\n') sys.exit(1) -def entry_get_version(entry): - return int(entry['version']) def get_ostree_option(optionstring): for o in optionstring.split(): if o.startswith('ostree='): return o[8:] - raise ValueError('ostree= not found') - -entries = [] -syslinux_entries = [] - -# Parse loader configs -for fname in os.listdir(loaderpath): - path = os.path.join(loaderpath, fname) - with open(path) as f: + raise ValueError('ostree= not found in %r' % (optionstring,)) + + +def parse_loader_configs(sysroot): + loaderpath = sysroot + '/boot/loader/entries' + entries = [] + + # Parse loader configs + for fname in os.listdir(loaderpath): + path = os.path.join(loaderpath, fname) entry = {} - for line in f: - line = line.strip() - if (line == '' or line.startswith('#')): - continue - s = line.find(' ') - assert s > 0 - k = line[0:s] - v = line[s+1:] - entry[k] = v + with open(path) as f: + for line in f: + line = line.strip() + if (line == '' or line.startswith('#')): + continue + k, v = line.split(' ', 1) + entry[k] = v entries.append(entry) - entries.sort(key=entry_get_version, reverse=True) + entries.sort(key=lambda e: int(e['version']), reverse=True) + return entries + -# Parse SYSLINUX config -with open(syslinuxpath) as f: - in_ostree_config = False - syslinux_entry = None - syslinux_default = None - for line in f: - try: - k, v = line.strip().split(" ", 1) - except ValueError: - continue - if k == 'DEFAULT': - if syslinux_entry is not None: - syslinux_default = v - elif k == 'LABEL': - if syslinux_entry is not None: - syslinux_entries.append(syslinux_entry) - syslinux_entry = {} - syslinux_entry['title'] = v - elif k == 'KERNEL': - syslinux_entry['linux'] = v - elif k == 'INITRD': - syslinux_entry['initrd'] = v - elif k == 'APPEND': - syslinux_entry['options'] = v - if syslinux_entry is not None: - syslinux_entries.append(syslinux_entry) +def validate_syslinux(sysroot): + syslinuxpath = sysroot + '/boot/syslinux/syslinux.cfg' -if len(entries) != len(syslinux_entries): - fatal("Found {0} loader entries, but {1} SYSLINUX entries\n".format(len(entries), len(syslinux_entries))) + entries = parse_loader_configs(sysroot) + syslinux_entries = [] + + # Parse SYSLINUX config + with open(syslinuxpath) as f: + syslinux_entry = None + for line in f: + try: + k, v = line.strip().split(" ", 1) + except ValueError: + continue + if k == 'DEFAULT': + if syslinux_entry is not None: + syslinux_default = v + elif k == 'LABEL': + if syslinux_entry is not None: + syslinux_entries.append(syslinux_entry) + syslinux_entry = {} + syslinux_entry['title'] = v + elif k == 'KERNEL': + syslinux_entry['linux'] = v + elif k == 'INITRD': + syslinux_entry['initrd'] = v + elif k == 'APPEND': + syslinux_entry['options'] = v + if syslinux_entry is not None: + syslinux_entries.append(syslinux_entry) + + if len(entries) != len(syslinux_entries): + fatal("Found {0} loader entries, but {1} SYSLINUX entries\n".format( + len(entries), len(syslinux_entries))) + + def assert_key_same_file(a, b, key): + aval = a[key] + bval = b[key] + sys.stderr.write("aval: %r\nbval: %r\n" % (aval, bval)) + + # Paths in entries are always relative to /boot + entry = os.stat(sysroot + "/boot" + aval) + + # Syslinux entries can be relative to /boot (if it's on another filesystem) + # or relative to / if /boot is on /. + s1 = os.stat(sysroot + bval) + s2 = os.stat(sysroot + "/boot" + bval) + + # A symlink ensures that no matter what they point at the same file + assert_eq(entry, s1) + assert_eq(entry, s2) + + for i, (entry, syslinuxentry) in enumerate(zip(entries, syslinux_entries)): + assert_key_same_file(entry, syslinuxentry, 'linux') + assert_key_same_file(entry, syslinuxentry, 'initrd') + entry_ostree = get_ostree_option(entry['options']) + syslinux_ostree = get_ostree_option(syslinuxentry['options']) + if entry_ostree != syslinux_ostree: + fatal("Mismatch on ostree option: {0} != {1}".format( + entry_ostree, syslinux_ostree)) + + sys.stdout.write('SYSLINUX configuration validated\n') + return 0 def assert_eq(a, b): assert a == b, "%r == %r" % (a, b) -def assert_key_same_file(a, b, key): - aval = a[key] - bval = b[key] - sys.stderr.write("aval: %r\nbval: %r\n" % (aval, bval)) - - # Paths in entries are always relative to /boot - entry = os.stat(sysroot + "/boot" + aval) - - # Syslinux entries can be relative to /boot (if it's on another filesystem) - # or relative to / if /boot is on /. - s1 = os.stat(sysroot + bval) - s2 = os.stat(sysroot + "/boot" + bval) - - # A symlink ensures that no matter what they point at the same file - assert_eq(entry, s1) - assert_eq(entry, s2) - - -for i,(entry,syslinuxentry) in enumerate(zip(entries, syslinux_entries)): - assert_key_same_file(entry, syslinuxentry, 'linux') - assert_key_same_file(entry, syslinuxentry, 'initrd') - entry_ostree = get_ostree_option(entry['options']) - syslinux_ostree = get_ostree_option(syslinuxentry['options']) - if entry_ostree != syslinux_ostree: - fatal("Mismatch on ostree option: {0} != {1}".format(entry_ostree, syslinux_ostree)) - -sys.stdout.write('SYSLINUX configuration validated\n') -sys.exit(0) +if __name__ == '__main__': + sys.exit(main(sys.argv)) diff -Nru ostree-2020.7/tests/pull-test.sh ostree-2020.8/tests/pull-test.sh --- ostree-2020.7/tests/pull-test.sh 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/tests/pull-test.sh 2020-10-27 09:14:08.000000000 +0000 @@ -55,10 +55,10 @@ } if has_gpgme; then - echo "1..35" + echo "1..36" else # 3 tests needs GPG support - echo "1..32" + echo "1..33" fi # Try both syntaxes @@ -381,6 +381,25 @@ ${CMD_PREFIX} ostree --repo=repo pull --timestamp-check-from-rev=${oldrev} origin main@${middlerev} echo "ok pull timestamp checking" +# test pull without override commit use summary, but with doesn't use summary +# We temporarily replace summary with broken one to detect if it is used +mv ostree-srv/gnomerepo/summary ostree-srv/gnomerepo/summary.backup +echo "broken" > ostree-srv/gnomerepo/summary + +repo_init --no-sign-verify +rev=$(ostree --repo=ostree-srv/gnomerepo rev-parse main) +# This will need summary, so will fail +if ${CMD_PREFIX} ostree --repo=repo -v pull origin main; then + assert_not_reached "Should have failed with broken summary" +fi +# This won't need summary so will not fail +${CMD_PREFIX} ostree --repo=repo pull origin main@${rev} + +# Restore summary +mv ostree-srv/gnomerepo/summary.backup ostree-srv/gnomerepo/summary + +echo "ok pull with override id doesn't use summary" + cd ${test_tmpdir} repo_init --no-sign-verify ${CMD_PREFIX} ostree --repo=repo pull origin main diff -Nru ostree-2020.7/tests/test-delta.sh ostree-2020.8/tests/test-delta.sh --- ostree-2020.7/tests/test-delta.sh 2020-10-13 15:03:02.000000000 +0000 +++ ostree-2020.8/tests/test-delta.sh 2020-10-27 09:14:08.000000000 +0000 @@ -28,7 +28,7 @@ bindatafiles="bash true ostree" morebindatafiles="false ls" -echo '1..12' +echo '1..13' mkdir repo ostree_repo_init repo --mode=archive @@ -90,6 +90,11 @@ ${CMD_PREFIX} ostree --repo=repo prune ${CMD_PREFIX} ostree --repo=repo static-delta list | grep ${origrev} || exit 1 +${CMD_PREFIX} ostree --repo=repo static-delta reindex +${CMD_PREFIX} ostree --repo=repo static-delta indexes | wc -l > indexcount +assert_file_has_content indexcount "^1$" +${CMD_PREFIX} ostree --repo=repo static-delta indexes | grep ${origrev} || exit 1 + permuteDirectory 1 files ${CMD_PREFIX} ostree --repo=repo commit -b test -s test --tree=dir=files @@ -119,6 +124,12 @@ ${CMD_PREFIX} ostree --repo=repo static-delta list | grep ${origrev}-${newrev} || exit 1 +${CMD_PREFIX} ostree --repo=repo static-delta reindex +${CMD_PREFIX} ostree --repo=repo static-delta indexes | wc -l > indexcount +assert_file_has_content indexcount "^2$" +${CMD_PREFIX} ostree --repo=repo static-delta indexes | grep ${origrev} || exit 1 +${CMD_PREFIX} ostree --repo=repo static-delta indexes | grep ${newrev} || exit 1 + if ${CMD_PREFIX} ostree --repo=repo static-delta generate --from=${origrev} --to=${newrev} --empty 2>>err.txt; then assert_not_reached "static-delta generate --from=${origrev} --empty unexpectedly succeeded" fi @@ -249,6 +260,41 @@ echo 'ok pull empty delta part' +rm -rf repo/delta-indexes +${CMD_PREFIX} ostree --repo=repo summary -u +${CMD_PREFIX} ostree summary -v --raw --repo=repo > summary.txt +assert_file_has_content summary.txt "ostree\.static\-deltas" + +${CMD_PREFIX} ostree --repo=repo config set core.no-deltas-in-summary true +${CMD_PREFIX} ostree --repo=repo summary -u + +${CMD_PREFIX} ostree summary -v --raw --repo=repo > summary.txt +assert_not_file_has_content summary.txt "ostree\.static\-deltas" + +rm -rf repo2 +mkdir repo2 && ostree_repo_init repo2 --mode=bare-user +${CMD_PREFIX} ostree --repo=repo2 pull-local repo ${newrev} + +rm -rf repo/delta-indexes +if ${CMD_PREFIX} ostree --repo=repo2 pull-local --require-static-deltas repo ${samerev} &> no-delta.txt; then + assert_not_reached "failing pull with --require-static-deltas unexpectedly succeeded" +fi +assert_file_has_content no-delta.txt "Static deltas required, but none found for" + +${CMD_PREFIX} ostree --repo=repo static-delta reindex +${CMD_PREFIX} ostree --repo=repo2 pull-local --require-static-deltas repo ${samerev} + +${CMD_PREFIX} ostree --repo=repo2 fsck +${CMD_PREFIX} ostree --repo=repo2 ls ${samerev} >/dev/null + +${CMD_PREFIX} ostree --repo=repo config set core.no-deltas-in-summary false +${CMD_PREFIX} ostree --repo=repo summary -u + +${CMD_PREFIX} ostree summary -v --raw --repo=repo > summary.txt +assert_file_has_content summary.txt "ostree\.static\-deltas" + +echo 'ok pull delta part with delta index' + # Make a new branch to test "rebase deltas" echo otherbranch-content > files/otherbranch-content ${CMD_PREFIX} ostree --repo=repo commit -b otherbranch --tree=dir=files diff -Nru ostree-2020.7/tests/test-pull-summary-caching.sh ostree-2020.8/tests/test-pull-summary-caching.sh --- ostree-2020.7/tests/test-pull-summary-caching.sh 1970-01-01 00:00:00.000000000 +0000 +++ ostree-2020.8/tests/test-pull-summary-caching.sh 2020-10-27 09:14:08.000000000 +0000 @@ -0,0 +1,66 @@ +#!/bin/bash +# +# Copyright © 2020 Endless OS Foundation LLC +# +# SPDX-License-Identifier: LGPL-2.0+ +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the +# Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. +# +# Authors: +# - Philip Withnall + +set -euo pipefail + +. $(dirname $0)/libtest.sh + +if ! has_gpgme; then + echo "1..0 #SKIP no gpg support compiled in" + exit 0 +fi + +COMMIT_SIGN="--gpg-homedir=${TEST_GPG_KEYHOME} --gpg-sign=${TEST_GPG_KEYID_1}" + +echo "1..1" + +setup_fake_remote_repo2 "archive" "${COMMIT_SIGN}" + +# Create a few branches and update the summary file (and sign it) +mkdir ${test_tmpdir}/ostree-srv/other-files +cd ${test_tmpdir}/ostree-srv/other-files +echo 'hello world another object' > hello-world +${CMD_PREFIX} ostree --repo=${test_tmpdir}/ostree-srv/gnomerepo commit ${COMMIT_SIGN} -b other -s "A commit" -m "Another Commit body" + +mkdir ${test_tmpdir}/ostree-srv/yet-other-files +cd ${test_tmpdir}/ostree-srv/yet-other-files +echo 'hello world yet another object' > yet-another-hello-world +${CMD_PREFIX} ostree --repo=${test_tmpdir}/ostree-srv/gnomerepo commit ${COMMIT_SIGN} -b yet-another -s "A commit" -m "Another Commit body" + +${CMD_PREFIX} ostree --repo=${test_tmpdir}/ostree-srv/gnomerepo summary -u ${COMMIT_SIGN} + +# Test that pulling twice in a row doesn’t re-download the summary file or its signature +cd ${test_tmpdir} +rm -rf repo +ostree_repo_init repo --mode=archive +${OSTREE} --repo=repo remote add --set=gpg-verify-summary=true origin $(cat httpd-address)/ostree/gnomerepo +${OSTREE} --repo=repo pull origin other +assert_has_file repo/tmp/cache/summaries/origin +assert_has_file repo/tmp/cache/summaries/origin.sig +summary_inode="$(stat -c '%i' repo/tmp/cache/summaries/origin)" +summary_sig_inode="$(stat -c '%i' repo/tmp/cache/summaries/origin.sig)" +${OSTREE} --repo=repo pull origin other +assert_streq "$(stat -c '%i' repo/tmp/cache/summaries/origin)" "${summary_inode}" +assert_streq "$(stat -c '%i' repo/tmp/cache/summaries/origin.sig)" "${summary_sig_inode}" +echo "ok pull caches the summary files" diff -Nru ostree-2020.7/tests/test-rfc2616-dates.c ostree-2020.8/tests/test-rfc2616-dates.c --- ostree-2020.7/tests/test-rfc2616-dates.c 1970-01-01 00:00:00.000000000 +0000 +++ ostree-2020.8/tests/test-rfc2616-dates.c 2020-10-27 09:14:08.000000000 +0000 @@ -0,0 +1,123 @@ +/* + * Copyright © 2020 Endless OS Foundation LLC + * + * SPDX-License-Identifier: LGPL-2.0+ + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Authors: + * - Philip Withnall + */ + +#include "config.h" + +#include + +#include "ostree-date-utils-private.h" + +static void +test_ostree_parse_rfc2616_date_time (void) +{ +#if GLIB_CHECK_VERSION(2, 62, 0) +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + const struct + { + const char *rfc2616; + const char *expected_iso8601; /* (nullable) if parsing is expected to fail */ + } + tests[] = + { + { "Wed, 21 Oct 2015 07:28:00 GMT", "2015-10-21T07:28:00Z" }, + { "Wed, 21 Oct 2015 07:28:00", NULL }, /* too short */ + { "Wed, 21 Oct 2015 07:28:00 CEST", NULL }, /* too long; not GMT */ + { "Cat, 21 Oct 2015 07:28:00 GMT", NULL }, /* invalid day */ + { "Wed 21 Oct 2015 07:28:00 GMT", NULL }, /* no comma */ + { "Wed,21 Oct 2015 07:28:00 GMT ", NULL }, /* missing space */ + { "Wed, xx Oct 2015 07:28:00 GMT", NULL }, /* no day-of-month */ + { "Wed, 011Oct 2015 07:28:00 GMT", NULL }, /* overlong day-of-month */ + { "Wed, 00 Oct 2015 07:28:00 GMT", NULL }, /* day-of-month underflow */ + { "Wed, 32 Oct 2015 07:28:00 GMT", NULL }, /* day-of-month overflow */ + { "Wed, 21,Oct 2015 07:28:00 GMT", NULL }, /* missing space */ + { "Wed, 21 Cat 2015 07:28:00 GMT", NULL }, /* invalid month */ + { "Wed, 21 Oct,2015 07:28:00 GMT", NULL }, /* missing space */ + { "Wed, 21 Oct xxxx 07:28:00 GMT", NULL }, /* no year */ + { "Wed, 21 Oct 0201507:28:00 GMT", NULL }, /* overlong year */ + { "Wed, 21 Oct 0000 07:28:00 GMT", NULL }, /* year underflow */ + { "Wed, 21 Oct 10000 07:28:00 GM", NULL }, /* year overflow */ + { "Wed, 21 Oct 2015,07:28:00 GMT", NULL }, /* missing space */ + { "Wed, 21 Oct 2015 07 28:00 GMT", NULL }, /* missing colon */ + { "Wed, 21 Oct 2015 007:28:00 GM", NULL }, /* overlong hour */ + { "Wed, 21 Oct 2015 xx:28:00 GMT", NULL }, /* missing hour */ + { "Wed, 21 Oct 2015 -1:28:00 GMT", NULL }, /* hour underflow */ + { "Wed, 21 Oct 2015 24:28:00 GMT", NULL }, /* hour overflow */ + { "Wed, 21 Oct 2015 07:28 00 GMT", NULL }, /* missing colon */ + { "Wed, 21 Oct 2015 07:028:00 GM", NULL }, /* overlong minute */ + { "Wed, 21 Oct 2015 07:xx:00 GMT", NULL }, /* missing minute */ + { "Wed, 21 Oct 2015 07:-1:00 GMT", NULL }, /* minute underflow */ + { "Wed, 21 Oct 2015 07:60:00 GMT", NULL }, /* minute overflow */ + { "Wed, 21 Oct 2015 07:28:00CEST", NULL }, /* missing space */ + { "Wed, 21 Oct 2015 07:28:000 GM", NULL }, /* overlong second */ + { "Wed, 21 Oct 2015 07:28:xx GMT", NULL }, /* missing second */ + { "Wed, 21 Oct 2015 07:28:-1 GMT", NULL }, /* seconds underflow */ + { "Wed, 21 Oct 2015 07:28:61 GMT", NULL }, /* seconds overflow */ + { "Wed, 21 Oct 2015 07:28:00 UTC", NULL }, /* invalid timezone (only GMT is allowed) */ + { "Thu, 01 Jan 1970 00:00:00 GMT", "1970-01-01T00:00:00Z" }, /* extreme but valid date */ + { "Mon, 31 Dec 9999 23:59:59 GMT", "9999-12-31T23:59:59Z" }, /* extreme but valid date */ + }; + + for (gsize i = 0; i < G_N_ELEMENTS (tests); i++) + { + g_test_message ("Test %" G_GSIZE_FORMAT ": %s", i, tests[i].rfc2616); + + /* Parse once with a trailing nul */ + g_autoptr(GDateTime) dt1 = _ostree_parse_rfc2616_date_time (tests[i].rfc2616, strlen (tests[i].rfc2616)); + if (tests[i].expected_iso8601 == NULL) + g_assert_null (dt1); + else + { + g_assert_nonnull (dt1); + g_autofree char *iso8601 = g_date_time_format_iso8601 (dt1); + g_assert_cmpstr (iso8601, ==, tests[i].expected_iso8601); + } + + /* And parse again with no trailing nul */ + g_autofree char *rfc2616_no_nul = g_malloc (strlen (tests[i].rfc2616)); + memcpy (rfc2616_no_nul, tests[i].rfc2616, strlen (tests[i].rfc2616)); + g_autoptr(GDateTime) dt2 = _ostree_parse_rfc2616_date_time (rfc2616_no_nul, strlen (tests[i].rfc2616)); + if (tests[i].expected_iso8601 == NULL) + g_assert_null (dt2); + else + { + g_assert_nonnull (dt2); + g_autofree char *iso8601 = g_date_time_format_iso8601 (dt2); + g_assert_cmpstr (iso8601, ==, tests[i].expected_iso8601); + } + } +G_GNUC_END_IGNORE_DEPRECATIONS +#else + /* GLib 2.62 is needed for g_date_time_format_iso8601(). */ + g_test_skip ("RFC 2616 date parsing test needs GLib ≥ 2.62.0"); +#endif +} + +int +main (int argc, + char **argv) +{ + g_test_init (&argc, &argv, NULL); + g_test_add_func ("/ostree_parse_rfc2616_date_time", test_ostree_parse_rfc2616_date_time); + return g_test_run (); +} diff -Nru ostree-2020.7/tests/test-symbols.sh ostree-2020.8/tests/test-symbols.sh --- ostree-2020.7/tests/test-symbols.sh 2020-10-14 00:04:02.000000000 +0000 +++ ostree-2020.8/tests/test-symbols.sh 2020-11-17 15:24:24.000000000 +0000 @@ -66,7 +66,7 @@ # ONLY update this checksum in release commits! cat > released-sha256.txt <