New upstream version 2019.5

This commit is contained in:
Simon McVittie 2019-11-02 10:23:11 +00:00
commit f2dce86edf
42 changed files with 409 additions and 155 deletions

View File

@ -117,6 +117,8 @@ libostree_1_la_SOURCES = \
src/libostree/ostree-bootloader.c \ src/libostree/ostree-bootloader.c \
src/libostree/ostree-bootloader-grub2.h \ src/libostree/ostree-bootloader-grub2.h \
src/libostree/ostree-bootloader-grub2.c \ src/libostree/ostree-bootloader-grub2.c \
src/libostree/ostree-bootloader-zipl.h \
src/libostree/ostree-bootloader-zipl.c \
src/libostree/ostree-bootloader-syslinux.h \ src/libostree/ostree-bootloader-syslinux.h \
src/libostree/ostree-bootloader-syslinux.c \ src/libostree/ostree-bootloader-syslinux.c \
src/libostree/ostree-bootloader-uboot.h \ src/libostree/ostree-bootloader-uboot.h \

View File

@ -34,7 +34,7 @@ ostree-init.1 ostree-log.1 ostree-ls.1 ostree-prune.1 ostree-pull-local.1 \
ostree-pull.1 ostree-refs.1 ostree-remote.1 ostree-reset.1 \ ostree-pull.1 ostree-refs.1 ostree-remote.1 ostree-reset.1 \
ostree-rev-parse.1 ostree-show.1 ostree-summary.1 \ ostree-rev-parse.1 ostree-show.1 ostree-summary.1 \
ostree-static-delta.1 ostree-static-delta.1
if BUILDOPT_TRIVIAL_HTTPD if USE_LIBSOUP
man1_files += ostree-trivial-httpd.1 man1_files += ostree-trivial-httpd.1
else else
# We still want to distribute the source, even if we are not building it # We still want to distribute the source, even if we are not building it

View File

@ -578,9 +578,9 @@ check_PROGRAMS = $(am__EXEEXT_12) $(am__EXEEXT_13) $(am__EXEEXT_14)
# We're using the system grub2-mkconfig generator # We're using the system grub2-mkconfig generator
@BUILDOPT_BUILTIN_GRUB2_MKCONFIG_FALSE@am__append_90 = src/boot/grub2/grub2-15_ostree @BUILDOPT_BUILTIN_GRUB2_MKCONFIG_FALSE@am__append_90 = src/boot/grub2/grub2-15_ostree
@BUILDOPT_BUILTIN_GRUB2_MKCONFIG_FALSE@am__append_91 = install-grub2-config-hook @BUILDOPT_BUILTIN_GRUB2_MKCONFIG_FALSE@am__append_91 = install-grub2-config-hook
@BUILDOPT_TRIVIAL_HTTPD_TRUE@@ENABLE_MAN_TRUE@am__append_92 = ostree-trivial-httpd.1 @ENABLE_MAN_TRUE@@USE_LIBSOUP_TRUE@am__append_92 = ostree-trivial-httpd.1
# We still want to distribute the source, even if we are not building it # We still want to distribute the source, even if we are not building it
@BUILDOPT_TRIVIAL_HTTPD_FALSE@@ENABLE_MAN_TRUE@am__append_93 = man/ostree-trivial-httpd.xml @ENABLE_MAN_TRUE@@USE_LIBSOUP_FALSE@am__append_93 = man/ostree-trivial-httpd.xml
@BUILDOPT_FUSE_TRUE@@ENABLE_MAN_TRUE@am__append_94 = rofiles-fuse.1 @BUILDOPT_FUSE_TRUE@@ENABLE_MAN_TRUE@am__append_94 = rofiles-fuse.1
@ENABLE_MAN_TRUE@@USE_GPGME_TRUE@am__append_95 = ostree-gpg-sign.1 @ENABLE_MAN_TRUE@@USE_GPGME_TRUE@am__append_95 = ostree-gpg-sign.1
@ENABLE_MAN_TRUE@am__append_96 = $(man1_MANS:.1=.xml) $(man5_MANS:.5=.xml) @ENABLE_MAN_TRUE@am__append_96 = $(man1_MANS:.1=.xml) $(man5_MANS:.5=.xml)
@ -813,6 +813,8 @@ am__libostree_1_la_SOURCES_DIST = \
src/libostree/ostree-bootloader.c \ src/libostree/ostree-bootloader.c \
src/libostree/ostree-bootloader-grub2.h \ src/libostree/ostree-bootloader-grub2.h \
src/libostree/ostree-bootloader-grub2.c \ src/libostree/ostree-bootloader-grub2.c \
src/libostree/ostree-bootloader-zipl.h \
src/libostree/ostree-bootloader-zipl.c \
src/libostree/ostree-bootloader-syslinux.h \ src/libostree/ostree-bootloader-syslinux.h \
src/libostree/ostree-bootloader-syslinux.c \ src/libostree/ostree-bootloader-syslinux.c \
src/libostree/ostree-bootloader-uboot.h \ src/libostree/ostree-bootloader-uboot.h \
@ -918,6 +920,7 @@ am_libostree_1_la_OBJECTS = \
src/libostree/libostree_1_la-ostree-deployment.lo \ src/libostree/libostree_1_la-ostree-deployment.lo \
src/libostree/libostree_1_la-ostree-bootloader.lo \ src/libostree/libostree_1_la-ostree-bootloader.lo \
src/libostree/libostree_1_la-ostree-bootloader-grub2.lo \ src/libostree/libostree_1_la-ostree-bootloader-grub2.lo \
src/libostree/libostree_1_la-ostree-bootloader-zipl.lo \
src/libostree/libostree_1_la-ostree-bootloader-syslinux.lo \ src/libostree/libostree_1_la-ostree-bootloader-syslinux.lo \
src/libostree/libostree_1_la-ostree-bootloader-uboot.lo \ src/libostree/libostree_1_la-ostree-bootloader-uboot.lo \
src/libostree/libostree_1_la-ostree-repo-static-delta-core.lo \ src/libostree/libostree_1_la-ostree-repo-static-delta-core.lo \
@ -1484,6 +1487,7 @@ am__depfiles_remade = bsdiff/$(DEPDIR)/libbsdiff_la-bsdiff.Plo \
src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-grub2.Plo \ src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-grub2.Plo \
src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-syslinux.Plo \ src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-syslinux.Plo \
src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-uboot.Plo \ src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-uboot.Plo \
src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-zipl.Plo \
src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader.Plo \ src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader.Plo \
src/libostree/$(DEPDIR)/libostree_1_la-ostree-chain-input-stream.Plo \ src/libostree/$(DEPDIR)/libostree_1_la-ostree-chain-input-stream.Plo \
src/libostree/$(DEPDIR)/libostree_1_la-ostree-checksum-input-stream.Plo \ src/libostree/$(DEPDIR)/libostree_1_la-ostree-checksum-input-stream.Plo \
@ -2611,6 +2615,8 @@ libostree_1_la_SOURCES = src/libostree/ostree-async-progress.c \
src/libostree/ostree-bootloader.c \ src/libostree/ostree-bootloader.c \
src/libostree/ostree-bootloader-grub2.h \ src/libostree/ostree-bootloader-grub2.h \
src/libostree/ostree-bootloader-grub2.c \ src/libostree/ostree-bootloader-grub2.c \
src/libostree/ostree-bootloader-zipl.h \
src/libostree/ostree-bootloader-zipl.c \
src/libostree/ostree-bootloader-syslinux.h \ src/libostree/ostree-bootloader-syslinux.h \
src/libostree/ostree-bootloader-syslinux.c \ src/libostree/ostree-bootloader-syslinux.c \
src/libostree/ostree-bootloader-uboot.h \ src/libostree/ostree-bootloader-uboot.h \
@ -3768,6 +3774,9 @@ src/libostree/libostree_1_la-ostree-bootloader.lo: \
src/libostree/libostree_1_la-ostree-bootloader-grub2.lo: \ src/libostree/libostree_1_la-ostree-bootloader-grub2.lo: \
src/libostree/$(am__dirstamp) \ src/libostree/$(am__dirstamp) \
src/libostree/$(DEPDIR)/$(am__dirstamp) src/libostree/$(DEPDIR)/$(am__dirstamp)
src/libostree/libostree_1_la-ostree-bootloader-zipl.lo: \
src/libostree/$(am__dirstamp) \
src/libostree/$(DEPDIR)/$(am__dirstamp)
src/libostree/libostree_1_la-ostree-bootloader-syslinux.lo: \ src/libostree/libostree_1_la-ostree-bootloader-syslinux.lo: \
src/libostree/$(am__dirstamp) \ src/libostree/$(am__dirstamp) \
src/libostree/$(DEPDIR)/$(am__dirstamp) src/libostree/$(DEPDIR)/$(am__dirstamp)
@ -4619,6 +4628,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-grub2.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-grub2.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-syslinux.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-syslinux.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-uboot.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-uboot.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-zipl.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/libostree_1_la-ostree-chain-input-stream.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/libostree/$(DEPDIR)/libostree_1_la-ostree-chain-input-stream.Plo@am__quote@ # am--include-marker
@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-checksum-input-stream.Plo@am__quote@ # am--include-marker
@ -5150,6 +5160,13 @@ src/libostree/libostree_1_la-ostree-bootloader-grub2.lo: src/libostree/ostree-bo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @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-bootloader-grub2.lo `test -f 'src/libostree/ostree-bootloader-grub2.c' || echo '$(srcdir)/'`src/libostree/ostree-bootloader-grub2.c @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-bootloader-grub2.lo `test -f 'src/libostree/ostree-bootloader-grub2.c' || echo '$(srcdir)/'`src/libostree/ostree-bootloader-grub2.c
src/libostree/libostree_1_la-ostree-bootloader-zipl.lo: src/libostree/ostree-bootloader-zipl.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-bootloader-zipl.lo -MD -MP -MF src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-zipl.Tpo -c -o src/libostree/libostree_1_la-ostree-bootloader-zipl.lo `test -f 'src/libostree/ostree-bootloader-zipl.c' || echo '$(srcdir)/'`src/libostree/ostree-bootloader-zipl.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-zipl.Tpo src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-zipl.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/libostree/ostree-bootloader-zipl.c' object='src/libostree/libostree_1_la-ostree-bootloader-zipl.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-bootloader-zipl.lo `test -f 'src/libostree/ostree-bootloader-zipl.c' || echo '$(srcdir)/'`src/libostree/ostree-bootloader-zipl.c
src/libostree/libostree_1_la-ostree-bootloader-syslinux.lo: src/libostree/ostree-bootloader-syslinux.c src/libostree/libostree_1_la-ostree-bootloader-syslinux.lo: src/libostree/ostree-bootloader-syslinux.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-bootloader-syslinux.lo -MD -MP -MF src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-syslinux.Tpo -c -o src/libostree/libostree_1_la-ostree-bootloader-syslinux.lo `test -f 'src/libostree/ostree-bootloader-syslinux.c' || echo '$(srcdir)/'`src/libostree/ostree-bootloader-syslinux.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-bootloader-syslinux.lo -MD -MP -MF src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-syslinux.Tpo -c -o src/libostree/libostree_1_la-ostree-bootloader-syslinux.lo `test -f 'src/libostree/ostree-bootloader-syslinux.c' || echo '$(srcdir)/'`src/libostree/ostree-bootloader-syslinux.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-syslinux.Tpo src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-syslinux.Plo @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-syslinux.Tpo src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-syslinux.Plo
@ -8710,6 +8727,7 @@ distclean: distclean-recursive
-rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-grub2.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-grub2.Plo
-rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-syslinux.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-syslinux.Plo
-rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-uboot.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-uboot.Plo
-rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-zipl.Plo
-rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader.Plo
-rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-chain-input-stream.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-chain-input-stream.Plo
-rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-checksum-input-stream.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-checksum-input-stream.Plo
@ -8970,6 +8988,7 @@ maintainer-clean: maintainer-clean-recursive
-rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-grub2.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-grub2.Plo
-rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-syslinux.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-syslinux.Plo
-rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-uboot.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-uboot.Plo
-rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader-zipl.Plo
-rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-bootloader.Plo
-rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-chain-input-stream.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-chain-input-stream.Plo
-rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-checksum-input-stream.Plo -rm -f src/libostree/$(DEPDIR)/libostree_1_la-ostree-checksum-input-stream.Plo

View File

@ -14,7 +14,7 @@
<div class="titlepage"> <div class="titlepage">
<div> <div>
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">OSTree API references</p></th></tr></table></div> <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">OSTree API references</p></th></tr></table></div>
<div><p class="releaseinfo">for OSTree 2019.4</p></div> <div><p class="releaseinfo">for OSTree 2019.5</p></div>
</div> </div>
<hr> <hr>
</div> </div>

View File

@ -1 +1 @@
2019.4 2019.5

View File

@ -1,4 +1,4 @@
#!/usr/bin/sh #! /bin/sh
# Wrapper for compilers which do not understand '-c -o'. # Wrapper for compilers which do not understand '-c -o'.
scriptversion=2018-03-07.03; # UTC scriptversion=2018-03-07.03; # UTC

View File

@ -1,4 +1,4 @@
#!/usr/bin/sh #! /bin/sh
# Attempt to guess a canonical system name. # Attempt to guess a canonical system name.
# Copyright 1992-2018 Free Software Foundation, Inc. # Copyright 1992-2018 Free Software Foundation, Inc.

View File

@ -1,4 +1,4 @@
#!/usr/bin/sh #! /bin/sh
# Configuration validation subroutine script. # Configuration validation subroutine script.
# Copyright 1992-2018 Free Software Foundation, Inc. # Copyright 1992-2018 Free Software Foundation, Inc.

View File

@ -1,4 +1,4 @@
#!/usr/bin/sh #! /bin/sh
# depcomp - compile a program generating dependencies as side-effects # depcomp - compile a program generating dependencies as side-effects
scriptversion=2018-03-07.03; # UTC scriptversion=2018-03-07.03; # UTC

View File

@ -1,4 +1,4 @@
#!/usr/bin/sh #!/bin/sh
# install - install a program, script, or datafile # install - install a program, script, or datafile
scriptversion=2018-03-11.20; # UTC scriptversion=2018-03-11.20; # UTC

View File

@ -1,4 +1,4 @@
#!/usr/bin/sh #! /bin/sh
# Common wrapper for a few potentially missing GNU programs. # Common wrapper for a few potentially missing GNU programs.
scriptversion=2018-03-07.03; # UTC scriptversion=2018-03-07.03; # UTC

View File

@ -1,4 +1,4 @@
#!/usr/bin/sh #! /bin/sh
# test-driver - basic testsuite driver script. # test-driver - basic testsuite driver script.
scriptversion=2018-03-07.03; # UTC scriptversion=2018-03-07.03; # UTC

40
configure vendored
View File

@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for libostree 2019.4. # Generated by GNU Autoconf 2.69 for libostree 2019.5.
# #
# Report bugs to <walters@verbum.org>. # Report bugs to <walters@verbum.org>.
# #
@ -590,8 +590,8 @@ MAKEFLAGS=
# Identity of this package. # Identity of this package.
PACKAGE_NAME='libostree' PACKAGE_NAME='libostree'
PACKAGE_TARNAME='libostree' PACKAGE_TARNAME='libostree'
PACKAGE_VERSION='2019.4' PACKAGE_VERSION='2019.5'
PACKAGE_STRING='libostree 2019.4' PACKAGE_STRING='libostree 2019.5'
PACKAGE_BUGREPORT='walters@verbum.org' PACKAGE_BUGREPORT='walters@verbum.org'
PACKAGE_URL='' PACKAGE_URL=''
@ -745,8 +745,6 @@ INTROSPECTION_COMPILER
INTROSPECTION_SCANNER INTROSPECTION_SCANNER
USE_CURL_OR_SOUP_FALSE USE_CURL_OR_SOUP_FALSE
USE_CURL_OR_SOUP_TRUE USE_CURL_OR_SOUP_TRUE
BUILDOPT_TRIVIAL_HTTPD_FALSE
BUILDOPT_TRIVIAL_HTTPD_TRUE
HAVE_LIBSOUP_CLIENT_CERTS_FALSE HAVE_LIBSOUP_CLIENT_CERTS_FALSE
HAVE_LIBSOUP_CLIENT_CERTS_TRUE HAVE_LIBSOUP_CLIENT_CERTS_TRUE
USE_LIBSOUP_FALSE USE_LIBSOUP_FALSE
@ -1556,7 +1554,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures libostree 2019.4 to adapt to many kinds of systems. \`configure' configures libostree 2019.5 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1626,7 +1624,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of libostree 2019.4:";; short | recursive ) echo "Configuration of libostree 2019.5:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@ -1885,7 +1883,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
libostree configure 2019.4 libostree configure 2019.5
generated by GNU Autoconf 2.69 generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc. Copyright (C) 2012 Free Software Foundation, Inc.
@ -2357,7 +2355,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by libostree $as_me 2019.4, which was It was created by libostree $as_me 2019.5, which was
generated by GNU Autoconf 2.69. Invocation command line was generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@ $ $0 $@
@ -3225,7 +3223,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE='libostree' PACKAGE='libostree'
VERSION='2019.4' VERSION='2019.5'
# Some tools Automake needs. # Some tools Automake needs.
@ -5959,9 +5957,9 @@ test -n "$YACC" || YACC="yacc"
YEAR_VERSION=2019 YEAR_VERSION=2019
RELEASE_VERSION=4 RELEASE_VERSION=5
PACKAGE_VERSION=2019.4 PACKAGE_VERSION=2019.5
if echo "$CFLAGS" | grep -q -E -e '-Werror($| )'; then : if echo "$CFLAGS" | grep -q -E -e '-Werror($| )'; then :
@ -15386,15 +15384,7 @@ else
enable_trivial_httpd_cmdline=no enable_trivial_httpd_cmdline=no
fi fi
if test x$enable_trivial_httpd_cmdline = xyes; then if test x$enable_trivial_httpd_cmdline = xyes; then :
BUILDOPT_TRIVIAL_HTTPD_TRUE=
BUILDOPT_TRIVIAL_HTTPD_FALSE='#'
else
BUILDOPT_TRIVIAL_HTTPD_TRUE='#'
BUILDOPT_TRIVIAL_HTTPD_FALSE=
fi
if test -z "$BUILDOPT_TRIVIAL_HTTPD_TRUE"; then :
$as_echo "#define BUILDOPT_ENABLE_TRIVIAL_HTTPD_CMDLINE 1" >>confdefs.h $as_echo "#define BUILDOPT_ENABLE_TRIVIAL_HTTPD_CMDLINE 1" >>confdefs.h
@ -18304,10 +18294,6 @@ if test -z "${HAVE_LIBSOUP_CLIENT_CERTS_TRUE}" && test -z "${HAVE_LIBSOUP_CLIENT
as_fn_error $? "conditional \"HAVE_LIBSOUP_CLIENT_CERTS\" was never defined. as_fn_error $? "conditional \"HAVE_LIBSOUP_CLIENT_CERTS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5 Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi fi
if test -z "${BUILDOPT_TRIVIAL_HTTPD_TRUE}" && test -z "${BUILDOPT_TRIVIAL_HTTPD_FALSE}"; then
as_fn_error $? "conditional \"BUILDOPT_TRIVIAL_HTTPD\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_CURL_OR_SOUP_TRUE}" && test -z "${USE_CURL_OR_SOUP_FALSE}"; then if test -z "${USE_CURL_OR_SOUP_TRUE}" && test -z "${USE_CURL_OR_SOUP_FALSE}"; then
as_fn_error $? "conditional \"USE_CURL_OR_SOUP\" was never defined. as_fn_error $? "conditional \"USE_CURL_OR_SOUP\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@ -18833,7 +18819,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" ac_log="
This file was extended by libostree $as_me 2019.4, which was This file was extended by libostree $as_me 2019.5, which was
generated by GNU Autoconf 2.69. Invocation command line was generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -18899,7 +18885,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\ ac_cs_version="\\
libostree config.status 2019.4 libostree config.status 2019.5
configured by $0, generated by GNU Autoconf 2.69, configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\" with options \\"\$ac_cs_config\\"

View File

@ -1,10 +1,13 @@
AC_PREREQ([2.63]) AC_PREREQ([2.63])
dnl If doing a final release, remember to follow the instructions to dnl To do a release: follow the instructions to update libostree-released.sym from
dnl update libostree-released.sym from libostree-devel.sym, and update the checksum dnl libostree-devel.sym, update the checksum in test-symbols.sh, set is_release_build=yes
dnl in test-symbols.sh, and also set is_release_build=yes below. Then make dnl below. Then make another post-release commit to bump the version and set
dnl another post-release commit to bump the version, and set is_release_build=no. dnl is_release_build=no.
dnl Seed the release notes with `git-shortlog-with-prs <previous-release>..`. Then use
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], [2019]) m4_define([year_version], [2019])
m4_define([release_version], [4]) m4_define([release_version], [5])
m4_define([package_version], [year_version.release_version]) m4_define([package_version], [year_version.release_version])
AC_INIT([libostree], [package_version], [walters@verbum.org]) AC_INIT([libostree], [package_version], [walters@verbum.org])
is_release_build=yes is_release_build=yes
@ -191,8 +194,7 @@ AC_ARG_ENABLE(trivial-httpd-cmdline,
[AS_HELP_STRING([--enable-trivial-httpd-cmdline], [AS_HELP_STRING([--enable-trivial-httpd-cmdline],
[Continue to support "ostree trivial-httpd" [default=no]])],, [Continue to support "ostree trivial-httpd" [default=no]])],,
enable_trivial_httpd_cmdline=no) enable_trivial_httpd_cmdline=no)
AM_CONDITIONAL(BUILDOPT_TRIVIAL_HTTPD, test x$enable_trivial_httpd_cmdline = xyes) AS_IF([test x$enable_trivial_httpd_cmdline = xyes],
AM_COND_IF(BUILDOPT_TRIVIAL_HTTPD,
[AC_DEFINE([BUILDOPT_ENABLE_TRIVIAL_HTTPD_CMDLINE], 1, [Define if we are enabling ostree trivial-httpd entrypoint])] [AC_DEFINE([BUILDOPT_ENABLE_TRIVIAL_HTTPD_CMDLINE], 1, [Define if we are enabling ostree trivial-httpd entrypoint])]
) )

View File

@ -18,6 +18,8 @@
***/ ***/
/* Add new symbols here. Release commits should copy this section into -released.sym. */ /* Add new symbols here. Release commits should copy this section into -released.sym. */
LIBOSTREE_2019.5 {
} LIBOSTREE_2019.4;
/* Stub section for the stable release *after* this development one; don't /* Stub section for the stable release *after* this development one; don't
* edit this other than to update the year. This is just a copy/paste * edit this other than to update the year. This is just a copy/paste

View File

@ -575,6 +575,8 @@ LIBOSTREE_2019.4 {
ostree_repo_mark_commit_partial_reason; ostree_repo_mark_commit_partial_reason;
} LIBOSTREE_2019.3; } LIBOSTREE_2019.3;
/* No new symbols in 2019.5 */
/* NOTE: Only add more content here in release commits! See the /* NOTE: Only add more content here in release commits! See the
* comments at the top of this file. * comments at the top of this file.
*/ */

View File

@ -465,7 +465,7 @@ ostree_async_progress_finish (OstreeAsyncProgress *self)
if (self->idle_source) if (self->idle_source)
{ {
g_source_destroy (self->idle_source); g_source_destroy (self->idle_source);
self->idle_source = NULL; g_clear_pointer (&self->idle_source, g_source_unref);
emit_changed = TRUE; emit_changed = TRUE;
} }
} }

View File

@ -0,0 +1,152 @@
/*
* Copyright (C) 2019 Colin Walters <walters@verbum.org>
*
* This program 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 licence 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.
*/
#include "config.h"
#include "ostree-sysroot-private.h"
#include "ostree-bootloader-zipl.h"
#include "otutil.h"
#include <string.h>
/* This is specific to zipl today, but in the future we could also
* use it for the grub2-mkconfig case.
*/
static const char zipl_requires_execute_path[] = "boot/ostree-bootloader-update.stamp";
struct _OstreeBootloaderZipl
{
GObject parent_instance;
OstreeSysroot *sysroot;
};
typedef GObjectClass OstreeBootloaderZiplClass;
static void _ostree_bootloader_zipl_bootloader_iface_init (OstreeBootloaderInterface *iface);
G_DEFINE_TYPE_WITH_CODE (OstreeBootloaderZipl, _ostree_bootloader_zipl, G_TYPE_OBJECT,
G_IMPLEMENT_INTERFACE (OSTREE_TYPE_BOOTLOADER, _ostree_bootloader_zipl_bootloader_iface_init));
static gboolean
_ostree_bootloader_zipl_query (OstreeBootloader *bootloader,
gboolean *out_is_active,
GCancellable *cancellable,
GError **error)
{
/* We don't auto-detect this one; should be explicitly chosen right now.
* see also https://github.com/coreos/coreos-assembler/pull/849
*/
*out_is_active = FALSE;
return TRUE;
}
static const char *
_ostree_bootloader_zipl_get_name (OstreeBootloader *bootloader)
{
return "zipl";
}
static gboolean
_ostree_bootloader_zipl_write_config (OstreeBootloader *bootloader,
int bootversion,
GPtrArray *new_deployments,
GCancellable *cancellable,
GError **error)
{
OstreeBootloaderZipl *self = OSTREE_BOOTLOADER_ZIPL (bootloader);
/* Write our stamp file */
if (!glnx_file_replace_contents_at (self->sysroot->sysroot_fd, zipl_requires_execute_path,
(guint8*)"", 0, GLNX_FILE_REPLACE_NODATASYNC,
cancellable, error))
return FALSE;
return TRUE;
}
static gboolean
_ostree_bootloader_zipl_post_bls_sync (OstreeBootloader *bootloader,
GCancellable *cancellable,
GError **error)
{
OstreeBootloaderZipl *self = OSTREE_BOOTLOADER_ZIPL (bootloader);
/* Note that unlike the grub2-mkconfig backend, we make no attempt to
* chroot().
*/
g_assert (self->sysroot->booted_deployment);
if (!glnx_fstatat_allow_noent (self->sysroot->sysroot_fd, zipl_requires_execute_path, NULL, 0, error))
return FALSE;
/* If there's no stamp file, nothing to do */
if (errno == ENOENT)
return TRUE;
const char *const zipl_argv[] = {"zipl", NULL};
int estatus;
if (!g_spawn_sync (NULL, (char**)zipl_argv, NULL, G_SPAWN_SEARCH_PATH,
NULL, NULL, NULL, NULL, &estatus, error))
return FALSE;
if (!g_spawn_check_exit_status (estatus, error))
return FALSE;
if (!glnx_unlinkat (self->sysroot->sysroot_fd, zipl_requires_execute_path, 0, error))
return FALSE;
return TRUE;
}
static void
_ostree_bootloader_zipl_finalize (GObject *object)
{
OstreeBootloaderZipl *self = OSTREE_BOOTLOADER_ZIPL (object);
g_clear_object (&self->sysroot);
G_OBJECT_CLASS (_ostree_bootloader_zipl_parent_class)->finalize (object);
}
void
_ostree_bootloader_zipl_init (OstreeBootloaderZipl *self)
{
}
static void
_ostree_bootloader_zipl_bootloader_iface_init (OstreeBootloaderInterface *iface)
{
iface->query = _ostree_bootloader_zipl_query;
iface->get_name = _ostree_bootloader_zipl_get_name;
iface->write_config = _ostree_bootloader_zipl_write_config;
iface->post_bls_sync = _ostree_bootloader_zipl_post_bls_sync;
}
void
_ostree_bootloader_zipl_class_init (OstreeBootloaderZiplClass *class)
{
GObjectClass *object_class = G_OBJECT_CLASS (class);
object_class->finalize = _ostree_bootloader_zipl_finalize;
}
OstreeBootloaderZipl *
_ostree_bootloader_zipl_new (OstreeSysroot *sysroot)
{
OstreeBootloaderZipl *self = g_object_new (OSTREE_TYPE_BOOTLOADER_ZIPL, NULL);
self->sysroot = g_object_ref (sysroot);
return self;
}

View File

@ -0,0 +1,36 @@
/*
* Copyright (C) 2019 Colin Walters <walters@verbum.org>
*
* This program 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 licence 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.
*/
#pragma once
#include "ostree-bootloader.h"
G_BEGIN_DECLS
#define OSTREE_TYPE_BOOTLOADER_ZIPL (_ostree_bootloader_zipl_get_type ())
#define OSTREE_BOOTLOADER_ZIPL(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), OSTREE_TYPE_BOOTLOADER_ZIPL, OstreeBootloaderZipl))
#define OSTREE_IS_BOOTLOADER_ZIPL(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), OSTREE_TYPE_BOOTLOADER_ZIPL))
typedef struct _OstreeBootloaderZipl OstreeBootloaderZipl;
GType _ostree_bootloader_zipl_get_type (void) G_GNUC_CONST;
OstreeBootloaderZipl * _ostree_bootloader_zipl_new (OstreeSysroot *sysroot);
G_END_DECLS

View File

@ -65,6 +65,19 @@ _ostree_bootloader_write_config (OstreeBootloader *self,
cancellable, error); cancellable, error);
} }
gboolean
_ostree_bootloader_post_bls_sync (OstreeBootloader *self,
GCancellable *cancellable,
GError **error)
{
g_return_val_if_fail (OSTREE_IS_BOOTLOADER (self), FALSE);
if (OSTREE_BOOTLOADER_GET_IFACE (self)->post_bls_sync)
return OSTREE_BOOTLOADER_GET_IFACE (self)->post_bls_sync (self, cancellable, error);
return TRUE;
}
gboolean gboolean
_ostree_bootloader_is_atomic (OstreeBootloader *self) _ostree_bootloader_is_atomic (OstreeBootloader *self)
{ {

View File

@ -47,6 +47,9 @@ struct _OstreeBootloaderInterface
GPtrArray *new_deployments, GPtrArray *new_deployments,
GCancellable *cancellable, GCancellable *cancellable,
GError **error); GError **error);
gboolean (* post_bls_sync) (OstreeBootloader *self,
GCancellable *cancellable,
GError **error);
gboolean (* is_atomic) (OstreeBootloader *self); gboolean (* is_atomic) (OstreeBootloader *self);
}; };
G_DEFINE_AUTOPTR_CLEANUP_FUNC (OstreeBootloader, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC (OstreeBootloader, g_object_unref)
@ -66,6 +69,10 @@ gboolean _ostree_bootloader_write_config (OstreeBootloader *self,
GCancellable *cancellable, GCancellable *cancellable,
GError **error); GError **error);
gboolean _ostree_bootloader_post_bls_sync (OstreeBootloader *self,
GCancellable *cancellable,
GError **error);
gboolean _ostree_bootloader_is_atomic (OstreeBootloader *self); gboolean _ostree_bootloader_is_atomic (OstreeBootloader *self);
G_END_DECLS G_END_DECLS

View File

@ -717,6 +717,8 @@ checkout_one_file_at (OstreeRepo *repo,
} }
current_repo = current_repo->parent_repo; current_repo = current_repo->parent_repo;
} }
/* Pacify clang-analyzer which sees us testing effectively if (repo == NULL) */
g_assert (repo);
need_copy = (hardlink_res == HARDLINK_RESULT_NOT_SUPPORTED); need_copy = (hardlink_res == HARDLINK_RESULT_NOT_SUPPORTED);
} }

View File

@ -871,7 +871,10 @@ write_content_object (OstreeRepo *self,
/* Give a null input if there's no content */ /* Give a null input if there's no content */
g_autoptr(GInputStream) null_input = NULL; g_autoptr(GInputStream) null_input = NULL;
if (!input) if (!input)
{
null_input = input = g_memory_input_stream_new_from_data ("", 0, NULL); null_input = input = g_memory_input_stream_new_from_data ("", 0, NULL);
(void) null_input; /* quiet static analysis */
}
checksum_input = ot_checksum_instream_new_with_start (input, G_CHECKSUM_SHA256, checksum_input = ot_checksum_instream_new_with_start (input, G_CHECKSUM_SHA256,
buf, len); buf, len);
@ -1585,7 +1588,6 @@ ostree_repo_prepare_transaction (OstreeRepo *self,
GCancellable *cancellable, GCancellable *cancellable,
GError **error) GError **error)
{ {
g_autoptr(_OstreeRepoAutoTransaction) txn = NULL;
guint64 reserved_bytes = 0; guint64 reserved_bytes = 0;
g_return_val_if_fail (self->in_transaction == FALSE, FALSE); g_return_val_if_fail (self->in_transaction == FALSE, FALSE);
@ -1593,7 +1595,8 @@ ostree_repo_prepare_transaction (OstreeRepo *self,
g_debug ("Preparing transaction in repository %p", self); g_debug ("Preparing transaction in repository %p", self);
/* Set up to abort the transaction if we return early from this function. */ /* Set up to abort the transaction if we return early from this function. */
txn = self; g_autoptr(_OstreeRepoAutoTransaction) txn = self;
(void) txn; /* Add use to silence static analysis */
memset (&self->txn.stats, 0, sizeof (OstreeRepoTransactionStats)); memset (&self->txn.stats, 0, sizeof (OstreeRepoTransactionStats));
@ -1649,7 +1652,7 @@ ostree_repo_prepare_transaction (OstreeRepo *self,
return FALSE; return FALSE;
/* Success: do not abort the transaction when returning. */ /* Success: do not abort the transaction when returning. */
txn = NULL; txn = NULL; (void) txn;
if (out_transaction_resume) if (out_transaction_resume)
*out_transaction_resume = ret_transaction_resume; *out_transaction_resume = ret_transaction_resume;

View File

@ -2181,7 +2181,6 @@ static void
start_fetch (OtPullData *pull_data, start_fetch (OtPullData *pull_data,
FetchObjectData *fetch) FetchObjectData *fetch)
{ {
gboolean is_meta;
g_autofree char *obj_subpath = NULL; g_autofree char *obj_subpath = NULL;
guint64 *expected_max_size_p; guint64 *expected_max_size_p;
guint64 expected_max_size; guint64 expected_max_size;
@ -2190,13 +2189,12 @@ start_fetch (OtPullData *pull_data,
GPtrArray *mirrorlist = NULL; GPtrArray *mirrorlist = NULL;
ostree_object_name_deserialize (fetch->object, &expected_checksum, &objtype); ostree_object_name_deserialize (fetch->object, &expected_checksum, &objtype);
is_meta = OSTREE_OBJECT_TYPE_IS_META (objtype);
g_debug ("starting fetch of %s.%s%s", expected_checksum, g_debug ("starting fetch of %s.%s%s", expected_checksum,
ostree_object_type_to_string (objtype), ostree_object_type_to_string (objtype),
fetch->is_detached_meta ? " (detached)" : ""); fetch->is_detached_meta ? " (detached)" : "");
is_meta = OSTREE_OBJECT_TYPE_IS_META (objtype); gboolean is_meta = OSTREE_OBJECT_TYPE_IS_META (objtype);
if (is_meta) if (is_meta)
pull_data->n_outstanding_metadata_fetches++; pull_data->n_outstanding_metadata_fetches++;
else else
@ -3575,7 +3573,7 @@ ostree_repo_pull_with_options (OstreeRepo *self,
g_autofree char **refs_to_fetch = NULL; g_autofree char **refs_to_fetch = NULL;
g_autoptr(GVariantIter) collection_refs_iter = NULL; g_autoptr(GVariantIter) collection_refs_iter = NULL;
g_autofree char **override_commit_ids = NULL; g_autofree char **override_commit_ids = NULL;
GSource *update_timeout = NULL; g_autoptr(GSource) update_timeout = NULL;
gboolean opt_gpg_verify_set = FALSE; gboolean opt_gpg_verify_set = FALSE;
gboolean opt_gpg_verify_summary_set = FALSE; gboolean opt_gpg_verify_summary_set = FALSE;
gboolean opt_collection_refs_set = FALSE; gboolean opt_collection_refs_set = FALSE;
@ -3677,6 +3675,10 @@ ostree_repo_pull_with_options (OstreeRepo *self,
pull_data->async_error = &pull_data->cached_async_error; pull_data->async_error = &pull_data->cached_async_error;
else else
pull_data->async_error = NULL; pull_data->async_error = NULL;
/* Note we're using the thread default (or global) context here, so it may outlive the
* OtPullData object if there's another ref on it. Thus, always detach/destroy sources
* local to the `ostree_repo_pull*` operation rather than trying to transfer ownership. */
pull_data->main_context = g_main_context_ref_thread_default (); pull_data->main_context = g_main_context_ref_thread_default ();
pull_data->flags = flags; pull_data->flags = flags;
@ -4516,7 +4518,6 @@ ostree_repo_pull_with_options (OstreeRepo *self,
g_source_set_priority (update_timeout, G_PRIORITY_HIGH); g_source_set_priority (update_timeout, G_PRIORITY_HIGH);
g_source_set_callback (update_timeout, update_progress, pull_data, NULL); g_source_set_callback (update_timeout, update_progress, pull_data, NULL);
g_source_attach (update_timeout, pull_data->main_context); g_source_attach (update_timeout, pull_data->main_context);
g_source_unref (update_timeout);
} }
/* Now await work completion */ /* Now await work completion */

View File

@ -1548,8 +1548,8 @@ keyfile_set_from_vardict (GKeyFile *keyfile,
g_key_file_set_string_list (keyfile, section, key, strv_child, len); g_key_file_set_string_list (keyfile, section, key, strv_child, len);
} }
else else
g_critical ("Unhandled type '%s' in " G_GNUC_FUNCTION, g_critical ("Unhandled type '%s' in %s",
(char*)g_variant_get_type (child)); (char*)g_variant_get_type (child), G_STRFUNC);
} }
} }
@ -3184,8 +3184,10 @@ reload_sysroot_config (OstreeRepo *self,
* binary "x" in /usr/lib/ostree/bootloaders/x). See: * binary "x" in /usr/lib/ostree/bootloaders/x). See:
* https://github.com/ostreedev/ostree/issues/1719 * https://github.com/ostreedev/ostree/issues/1719
* https://github.com/ostreedev/ostree/issues/1801 * 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"))) 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); return glnx_throw (error, "Invalid bootloader configuration: '%s'", bootloader);
g_free (self->bootloader); g_free (self->bootloader);
@ -4197,7 +4199,7 @@ ostree_repo_has_object (OstreeRepo *self,
GCancellable *cancellable, GCancellable *cancellable,
GError **error) GError **error)
{ {
gboolean ret_have_object; gboolean ret_have_object = FALSE;
if (!_ostree_repo_has_loose_object (self, checksum, objtype, &ret_have_object, if (!_ostree_repo_has_loose_object (self, checksum, objtype, &ret_have_object,
cancellable, error)) cancellable, error))

View File

@ -313,6 +313,7 @@ cleanup_old_deployments (OstreeSysroot *self,
if (!list_all_deployment_directories (self, &all_deployment_dirs, if (!list_all_deployment_directories (self, &all_deployment_dirs,
cancellable, error)) cancellable, error))
return FALSE; return FALSE;
g_assert (all_deployment_dirs); /* Pacify static analysis */
for (guint i = 0; i < all_deployment_dirs->len; i++) for (guint i = 0; i < all_deployment_dirs->len; i++)
{ {
OstreeDeployment *deployment = all_deployment_dirs->pdata[i]; OstreeDeployment *deployment = all_deployment_dirs->pdata[i];

View File

@ -43,6 +43,7 @@
#include "ostree.h" #include "ostree.h"
#include "ostree-sysroot-private.h" #include "ostree-sysroot-private.h"
#include "ostree-sepolicy-private.h" #include "ostree-sepolicy-private.h"
#include "ostree-bootloader-zipl.h"
#include "ostree-deployment-private.h" #include "ostree-deployment-private.h"
#include "ostree-core-private.h" #include "ostree-core-private.h"
#include "ostree-linuxfsutil.h" #include "ostree-linuxfsutil.h"
@ -753,15 +754,14 @@ prepare_deployment_etc (OstreeSysroot *sysroot,
return FALSE; return FALSE;
gboolean usretc_exists = (errno == 0); gboolean usretc_exists = (errno == 0);
if (etc_exists && usretc_exists) if (etc_exists)
return glnx_throw (error, "Tree contains both /etc and /usr/etc");
else if (etc_exists)
{ {
if (usretc_exists)
return glnx_throw (error, "Tree contains both /etc and /usr/etc");
/* Compatibility hack */ /* Compatibility hack */
if (!glnx_renameat (deployment_dfd, "etc", deployment_dfd, "usr/etc", error)) if (!glnx_renameat (deployment_dfd, "etc", deployment_dfd, "usr/etc", error))
return FALSE; return FALSE;
usretc_exists = TRUE; usretc_exists = TRUE;
etc_exists = FALSE;
} }
if (usretc_exists) if (usretc_exists)
@ -878,6 +878,8 @@ typedef struct {
int boot_dfd; int boot_dfd;
char *kernel_srcpath; char *kernel_srcpath;
char *kernel_namever; char *kernel_namever;
char *kernel_hmac_srcpath;
char *kernel_hmac_namever;
char *initramfs_srcpath; char *initramfs_srcpath;
char *initramfs_namever; char *initramfs_namever;
char *devicetree_srcpath; char *devicetree_srcpath;
@ -890,6 +892,8 @@ _ostree_kernel_layout_free (OstreeKernelLayout *layout)
glnx_close_fd (&layout->boot_dfd); glnx_close_fd (&layout->boot_dfd);
g_free (layout->kernel_srcpath); g_free (layout->kernel_srcpath);
g_free (layout->kernel_namever); g_free (layout->kernel_namever);
g_free (layout->kernel_hmac_srcpath);
g_free (layout->kernel_hmac_namever);
g_free (layout->initramfs_srcpath); g_free (layout->initramfs_srcpath);
g_free (layout->initramfs_namever); g_free (layout->initramfs_namever);
g_free (layout->devicetree_srcpath); g_free (layout->devicetree_srcpath);
@ -1032,6 +1036,16 @@ get_kernel_from_tree_usrlib_modules (int deployment_dfd,
g_clear_object (&in); g_clear_object (&in);
glnx_close_fd (&fd); glnx_close_fd (&fd);
/* And finally, look for any HMAC file. This is needed for FIPS mode on some distros. */
if (!glnx_fstatat_allow_noent (ret_layout->boot_dfd, ".vmlinuz.hmac", NULL, 0, error))
return FALSE;
if (errno == 0)
{
ret_layout->kernel_hmac_srcpath = g_strdup (".vmlinuz.hmac");
/* Name it as dracut expects it: https://github.com/dracutdevs/dracut/blob/225e4b94cbdb702cf512490dcd2ad9ca5f5b22c1/modules.d/01fips/fips.sh#L129 */
ret_layout->kernel_hmac_namever = g_strdup_printf (".%s.hmac", ret_layout->kernel_namever);
}
char hexdigest[OSTREE_SHA256_STRING_LEN+1]; char hexdigest[OSTREE_SHA256_STRING_LEN+1];
ot_checksum_get_hexdigest (&checksum, hexdigest, sizeof (hexdigest)); ot_checksum_get_hexdigest (&checksum, hexdigest, sizeof (hexdigest));
ret_layout->bootcsum = g_strdup (hexdigest); ret_layout->bootcsum = g_strdup (hexdigest);
@ -1686,6 +1700,20 @@ install_deployment_kernel (OstreeSysroot *sysroot,
} }
} }
if (kernel_layout->kernel_hmac_srcpath)
{
if (!glnx_fstatat_allow_noent (bootcsum_dfd, kernel_layout->kernel_hmac_namever, &stbuf, 0, error))
return FALSE;
if (errno == ENOENT)
{
if (!install_into_boot (sepolicy, kernel_layout->boot_dfd, kernel_layout->kernel_hmac_srcpath,
bootcsum_dfd, kernel_layout->kernel_hmac_namever,
sysroot->debug_flags,
cancellable, error))
return FALSE;
}
}
g_autofree char *contents = NULL; g_autofree char *contents = NULL;
if (!glnx_fstatat_allow_noent (deployment_dfd, "usr/lib/os-release", &stbuf, 0, error)) if (!glnx_fstatat_allow_noent (deployment_dfd, "usr/lib/os-release", &stbuf, 0, error))
return FALSE; return FALSE;
@ -1830,6 +1858,7 @@ prepare_new_bootloader_link (OstreeSysroot *sysroot,
/* Update the /boot/loader symlink to point to /boot/loader.$new_bootversion */ /* Update the /boot/loader symlink to point to /boot/loader.$new_bootversion */
static gboolean static gboolean
swap_bootloader (OstreeSysroot *sysroot, swap_bootloader (OstreeSysroot *sysroot,
OstreeBootloader *bootloader,
int current_bootversion, int current_bootversion,
int new_bootversion, int new_bootversion,
GCancellable *cancellable, GCancellable *cancellable,
@ -1863,6 +1892,15 @@ swap_bootloader (OstreeSysroot *sysroot,
if (fsync (boot_dfd) != 0) if (fsync (boot_dfd) != 0)
return glnx_throw_errno_prefix (error, "fsync(boot)"); return glnx_throw_errno_prefix (error, "fsync(boot)");
/* TODO: In the future also execute this automatically via a systemd unit
* if we detect it's necessary.
**/
if (bootloader)
{
if (!_ostree_bootloader_post_bls_sync (bootloader, cancellable, error))
return FALSE;
}
return TRUE; return TRUE;
} }
@ -2129,7 +2167,7 @@ write_deployments_bootswap (OstreeSysroot *self,
if (!full_system_sync (self, out_syncstats, cancellable, error)) if (!full_system_sync (self, out_syncstats, cancellable, error))
return FALSE; return FALSE;
if (!swap_bootloader (self, self->bootversion, new_bootversion, if (!swap_bootloader (self, bootloader, self->bootversion, new_bootversion,
cancellable, error)) cancellable, error))
return FALSE; return FALSE;
@ -2356,6 +2394,14 @@ ostree_sysroot_write_deployments_with_options (OstreeSysroot *self,
{ {
/* No bootloader specified; do not query bootloaders to run. */ /* 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);
}
bootloader_is_atomic = bootloader != NULL && _ostree_bootloader_is_atomic (bootloader); bootloader_is_atomic = bootloader != NULL && _ostree_bootloader_is_atomic (bootloader);

View File

@ -945,6 +945,7 @@ ostree_sysroot_load_if_changed (OstreeSysroot *self,
g_autoptr(GPtrArray) deployments = g_ptr_array_new_with_free_func ((GDestroyNotify)g_object_unref); g_autoptr(GPtrArray) deployments = g_ptr_array_new_with_free_func ((GDestroyNotify)g_object_unref);
g_assert (boot_loader_configs); /* Pacify static analysis */
for (guint i = 0; i < boot_loader_configs->len; i++) for (guint i = 0; i < boot_loader_configs->len; i++)
{ {
OstreeBootconfigParser *config = boot_loader_configs->pdata[i]; OstreeBootconfigParser *config = boot_loader_configs->pdata[i];
@ -1671,10 +1672,7 @@ ostree_sysroot_simple_write_deployment (OstreeSysroot *sysroot,
/* add it last if no crossover defined (or it's the first deployment in the sysroot) */ /* add it last if no crossover defined (or it's the first deployment in the sysroot) */
if (!added_new) if (!added_new)
{
g_ptr_array_add (new_deployments, g_object_ref (new_deployment)); g_ptr_array_add (new_deployments, g_object_ref (new_deployment));
added_new = TRUE;
}
OstreeSysrootWriteDeploymentsOpts write_opts = { .do_postclean = postclean }; OstreeSysrootWriteDeploymentsOpts write_opts = { .do_postclean = postclean };
if (!ostree_sysroot_write_deployments_with_options (sysroot, new_deployments, &write_opts, if (!ostree_sysroot_write_deployments_with_options (sysroot, new_deployments, &write_opts,

View File

@ -43,7 +43,7 @@
* *
* Since: 2017.4 * Since: 2017.4
*/ */
#define OSTREE_RELEASE_VERSION (4) #define OSTREE_RELEASE_VERSION (5)
/** /**
* OSTREE_VERSION * OSTREE_VERSION
@ -52,7 +52,7 @@
* *
* Since: 2017.4 * Since: 2017.4
*/ */
#define OSTREE_VERSION (2019.4) #define OSTREE_VERSION (2019.5)
/** /**
* OSTREE_VERSION_S: * OSTREE_VERSION_S:
@ -62,7 +62,7 @@
* *
* Since: 2017.4 * Since: 2017.4
*/ */
#define OSTREE_VERSION_S "2019.4" #define OSTREE_VERSION_S "2019.5"
#define OSTREE_ENCODE_VERSION(year,release) \ #define OSTREE_ENCODE_VERSION(year,release) \
((year) << 16 | (release)) ((year) << 16 | (release))

View File

@ -250,9 +250,8 @@ ot_gio_splice_get_checksum (GOutputStream *out,
guint8 digest[_OSTREE_SHA256_DIGEST_LEN]; guint8 digest[_OSTREE_SHA256_DIGEST_LEN];
ot_checksum_get_digest (&checksum, digest, sizeof (digest)); ot_checksum_get_digest (&checksum, digest, sizeof (digest));
g_autofree guchar *ret_csum = g_malloc (sizeof (digest)); if (out_csum)
memcpy (ret_csum, digest, sizeof (digest)); *out_csum = g_memdup (digest, sizeof (digest));
ot_transfer_out_value (out_csum, &ret_csum);
return TRUE; return TRUE;
} }

View File

@ -35,15 +35,12 @@ ot_keyfile_get_boolean_with_default (GKeyFile *keyfile,
gboolean *out_bool, gboolean *out_bool,
GError **error) GError **error)
{ {
gboolean ret = FALSE; g_return_val_if_fail (keyfile != NULL, FALSE);
g_return_val_if_fail (section != NULL, FALSE);
g_return_val_if_fail (value != NULL, FALSE);
GError *temp_error = NULL; GError *temp_error = NULL;
gboolean ret_bool; gboolean ret_bool = g_key_file_get_boolean (keyfile, section, value, &temp_error);
g_return_val_if_fail (keyfile != NULL, ret);
g_return_val_if_fail (section != NULL, ret);
g_return_val_if_fail (value != NULL, ret);
ret_bool = g_key_file_get_boolean (keyfile, section, value, &temp_error);
if (temp_error) if (temp_error)
{ {
if (g_error_matches (temp_error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_KEY_NOT_FOUND)) if (g_error_matches (temp_error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_KEY_NOT_FOUND))
@ -54,14 +51,12 @@ ot_keyfile_get_boolean_with_default (GKeyFile *keyfile,
else else
{ {
g_propagate_error (error, temp_error); g_propagate_error (error, temp_error);
goto out; return FALSE;
} }
} }
ret = TRUE;
*out_bool = ret_bool; *out_bool = ret_bool;
out: return TRUE;
return ret;
} }
gboolean gboolean
@ -72,33 +67,29 @@ ot_keyfile_get_value_with_default (GKeyFile *keyfile,
char **out_value, char **out_value,
GError **error) GError **error)
{ {
gboolean ret = FALSE; g_return_val_if_fail (keyfile != NULL, FALSE);
g_return_val_if_fail (section != NULL, FALSE);
g_return_val_if_fail (value != NULL, FALSE);
GError *temp_error = NULL; GError *temp_error = NULL;
g_autofree char *ret_value = NULL; g_autofree char *ret_value = g_key_file_get_value (keyfile, section, value, &temp_error);
g_return_val_if_fail (keyfile != NULL, ret);
g_return_val_if_fail (section != NULL, ret);
g_return_val_if_fail (value != NULL, ret);
ret_value = g_key_file_get_value (keyfile, section, value, &temp_error);
if (temp_error) if (temp_error)
{ {
if (g_error_matches (temp_error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_KEY_NOT_FOUND)) if (g_error_matches (temp_error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_KEY_NOT_FOUND))
{ {
g_clear_error (&temp_error); g_clear_error (&temp_error);
g_assert (ret_value == NULL);
ret_value = g_strdup (default_value); ret_value = g_strdup (default_value);
} }
else else
{ {
g_propagate_error (error, temp_error); g_propagate_error (error, temp_error);
goto out; return FALSE;
} }
} }
ret = TRUE;
ot_transfer_out_value(out_value, &ret_value); ot_transfer_out_value(out_value, &ret_value);
out: return TRUE;
return ret;
} }
gboolean gboolean
@ -109,14 +100,12 @@ ot_keyfile_get_value_with_default_group_optional (GKeyFile *keyfile,
char **out_value, char **out_value,
GError **error) GError **error)
{ {
gboolean ret = FALSE; g_return_val_if_fail (keyfile != NULL, FALSE);
g_return_val_if_fail (section != NULL, FALSE);
g_return_val_if_fail (value != NULL, FALSE);
GError *local_error = NULL; GError *local_error = NULL;
g_autofree char *ret_value = NULL; g_autofree char *ret_value = NULL;
g_return_val_if_fail (keyfile != NULL, ret);
g_return_val_if_fail (section != NULL, ret);
g_return_val_if_fail (value != NULL, ret);
if (!ot_keyfile_get_value_with_default (keyfile, section, value, default_value, &ret_value, &local_error)) if (!ot_keyfile_get_value_with_default (keyfile, section, value, default_value, &ret_value, &local_error))
{ {
if (g_error_matches (local_error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_GROUP_NOT_FOUND)) if (g_error_matches (local_error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_GROUP_NOT_FOUND))
@ -127,14 +116,12 @@ ot_keyfile_get_value_with_default_group_optional (GKeyFile *keyfile,
else else
{ {
g_propagate_error (error, local_error); g_propagate_error (error, local_error);
goto out; return FALSE;
} }
} }
ret = TRUE;
ot_transfer_out_value(out_value, &ret_value); ot_transfer_out_value(out_value, &ret_value);
out: return TRUE;
return ret;
} }
/* Read the value of key as a string. If the value string contains /* Read the value of key as a string. If the value string contains
@ -151,22 +138,21 @@ ot_keyfile_get_string_list_with_separator_choice (GKeyFile *keyfile,
char ***out_value, char ***out_value,
GError **error) GError **error)
{ {
guint sep_count = 0;
gchar sep = '\0';
g_autofree char *value_str = NULL;
g_autofree char **value_list = NULL;
g_return_val_if_fail (keyfile != NULL, FALSE); g_return_val_if_fail (keyfile != NULL, FALSE);
g_return_val_if_fail (section != NULL, FALSE); g_return_val_if_fail (section != NULL, FALSE);
g_return_val_if_fail (key != NULL, FALSE); g_return_val_if_fail (key != NULL, FALSE);
g_return_val_if_fail (separators != NULL, FALSE); g_return_val_if_fail (separators != NULL, FALSE);
g_autofree char *value_str = NULL;
if (!ot_keyfile_get_value_with_default (keyfile, section, key, NULL, if (!ot_keyfile_get_value_with_default (keyfile, section, key, NULL,
&value_str, error)) &value_str, error))
return FALSE; return FALSE;
g_auto(GStrv) value_list = NULL;
if (value_str) if (value_str)
{ {
gchar sep = '\0';
guint sep_count = 0;
for (size_t i = 0; i < strlen (separators) && sep_count <= 1; i++) for (size_t i = 0; i < strlen (separators) && sep_count <= 1; i++)
{ {
if (strchr (value_str, separators[i])) if (strchr (value_str, separators[i]))
@ -215,7 +201,7 @@ ot_keyfile_get_string_list_with_default (GKeyFile *keyfile,
g_key_file_set_list_separator (keyfile, separator); g_key_file_set_list_separator (keyfile, separator);
g_autofree char **ret_value = g_key_file_get_string_list (keyfile, section, g_auto(GStrv) ret_value = g_key_file_get_string_list (keyfile, section,
key, NULL, &temp_error); key, NULL, &temp_error);
if (temp_error) if (temp_error)
@ -224,7 +210,7 @@ ot_keyfile_get_string_list_with_default (GKeyFile *keyfile,
G_KEY_FILE_ERROR_KEY_NOT_FOUND)) G_KEY_FILE_ERROR_KEY_NOT_FOUND))
{ {
g_clear_error (&temp_error); g_clear_error (&temp_error);
ret_value = default_value; ret_value = g_strdupv (default_value);
} }
else else
{ {

View File

@ -1150,14 +1150,8 @@ ot_variant_builder_end (OtVariantBuilder *builder,
GError **error) GError **error)
{ {
OtVariantBuilderInfo *info = builder->head; OtVariantBuilderInfo *info = builder->head;
gsize total_size;
gsize offset_size;
int i;
g_autofree guchar *offset_table = NULL;
gsize offset_table_size;
gboolean add_offset_table = FALSE; gboolean add_offset_table = FALSE;
gboolean reverse_offset_table = FALSE; gboolean reverse_offset_table = FALSE;
guchar *p;
g_return_val_if_fail (info->n_children >= info->min_items, g_return_val_if_fail (info->n_children >= info->min_items,
FALSE); FALSE);
@ -1188,15 +1182,14 @@ ot_variant_builder_end (OtVariantBuilder *builder,
if (add_offset_table) if (add_offset_table)
{ {
total_size = gvs_calculate_total_size (info->offset, info->child_ends->len); const gsize total_size = gvs_calculate_total_size (info->offset, info->child_ends->len);
offset_size = gvs_get_offset_size (total_size); const gsize offset_size = gvs_get_offset_size (total_size);
const gsize offset_table_size = total_size - info->offset;
offset_table_size = total_size - info->offset; g_autofree guchar *offset_table = g_malloc (offset_table_size);
offset_table = g_malloc (offset_table_size); guchar *p = offset_table;
p = offset_table;
if (reverse_offset_table) if (reverse_offset_table)
{ {
for (i = info->child_ends->len - 1; i >= 0; i--) for (int i = info->child_ends->len - 1; i >= 0; i--)
{ {
gvs_write_unaligned_le (p, g_array_index (info->child_ends, guint64, i), offset_size); gvs_write_unaligned_le (p, g_array_index (info->child_ends, guint64, i), offset_size);
p += offset_size; p += offset_size;
@ -1204,7 +1197,7 @@ ot_variant_builder_end (OtVariantBuilder *builder,
} }
else else
{ {
for (i = 0; i < info->child_ends->len; i++) for (int i = 0; i < info->child_ends->len; i++)
{ {
gvs_write_unaligned_le (p, g_array_index (info->child_ends, guint64, i), offset_size); gvs_write_unaligned_le (p, g_array_index (info->child_ends, guint64, i), offset_size);
p += offset_size; p += offset_size;

View File

@ -772,8 +772,6 @@ ostree_builtin_commit (int argc, char **argv, OstreeCommandInvocation *invocatio
if (!skip_commit) if (!skip_commit)
{ {
guint64 timestamp;
if (!opt_no_bindings) if (!opt_no_bindings)
{ {
g_autoptr(GVariant) old_metadata = g_steal_pointer (&metadata); g_autoptr(GVariant) old_metadata = g_steal_pointer (&metadata);
@ -782,10 +780,6 @@ ostree_builtin_commit (int argc, char **argv, OstreeCommandInvocation *invocatio
if (!opt_timestamp) if (!opt_timestamp)
{ {
GDateTime *now = g_date_time_new_now_utc ();
timestamp = g_date_time_to_unix (now);
g_date_time_unref (now);
if (!ostree_repo_write_commit (repo, parent, opt_subject, commit_body, metadata, if (!ostree_repo_write_commit (repo, parent, opt_subject, commit_body, metadata,
OSTREE_REPO_FILE (root), OSTREE_REPO_FILE (root),
&commit_checksum, cancellable, error)) &commit_checksum, cancellable, error))
@ -800,8 +794,8 @@ ostree_builtin_commit (int argc, char **argv, OstreeCommandInvocation *invocatio
"Could not parse '%s'", opt_timestamp); "Could not parse '%s'", opt_timestamp);
goto out; goto out;
} }
timestamp = ts.tv_sec;
guint64 timestamp = ts.tv_sec;
if (!ostree_repo_write_commit_with_time (repo, parent, opt_subject, commit_body, metadata, if (!ostree_repo_write_commit_with_time (repo, parent, opt_subject, commit_body, metadata,
OSTREE_REPO_FILE (root), OSTREE_REPO_FILE (root),
timestamp, timestamp,

View File

@ -434,6 +434,7 @@ ostree_builtin_fsck (int argc, char **argv, OstreeCommandInvocation *invocation,
if (opt_add_tombstones) if (opt_add_tombstones)
{ {
guint i; guint i;
g_assert (tombstones); /* Pacify static analysis */
if (tombstones->len) if (tombstones->len)
{ {
if (!ot_enable_tombstone_commits (repo, error)) if (!ot_enable_tombstone_commits (repo, error))

View File

@ -205,7 +205,7 @@ ostree_builtin_prune (int argc, char **argv, OstreeCommandInvocation *invocation
g_autoptr(GHashTable) all_refs = NULL; g_autoptr(GHashTable) all_refs = NULL;
g_autoptr(GHashTable) reachable = ostree_repo_traverse_new_reachable (); g_autoptr(GHashTable) reachable = ostree_repo_traverse_new_reachable ();
g_autoptr(GHashTable) retain_branch_depth = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); g_autoptr(GHashTable) retain_branch_depth = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
struct timespec keep_younger_than_ts; struct timespec keep_younger_than_ts = {0, };
GHashTableIter hash_iter; GHashTableIter hash_iter;
gpointer key, value; gpointer key, value;

View File

@ -125,7 +125,10 @@ dump_commit (GVariant *variant,
timestamp = GUINT64_FROM_BE (timestamp); timestamp = GUINT64_FROM_BE (timestamp);
str = format_timestamp (timestamp, &local_error); str = format_timestamp (timestamp, &local_error);
if (!str) if (!str)
{
g_assert (local_error); /* Pacify static analysis */
errx (1, "Failed to read commit: %s", local_error->message); errx (1, "Failed to read commit: %s", local_error->message);
}
g_autofree char *contents = ostree_commit_get_content_checksum (variant) ?: "<invalid commit>"; g_autofree char *contents = ostree_commit_get_content_checksum (variant) ?: "<invalid commit>";
g_print ("ContentChecksum: %s\n", contents); g_print ("ContentChecksum: %s\n", contents);
g_print ("Date: %s\n", str); g_print ("Date: %s\n", str);

View File

@ -145,7 +145,7 @@ ot_test_setup_sysroot (GCancellable *cancellable,
g_autoptr(GString) buf = g_string_new ("mutable-deployments"); g_autoptr(GString) buf = g_string_new ("mutable-deployments");
gboolean can_relabel; gboolean can_relabel = FALSE;
if (!ot_check_relabeling (&can_relabel, error)) if (!ot_check_relabeling (&can_relabel, error))
return FALSE; return FALSE;
if (!can_relabel) if (!can_relabel)

View File

@ -395,6 +395,8 @@ setup_os_repository () {
mkdir -p usr/bin ${bootdir} usr/lib/modules/${kver} usr/share usr/etc mkdir -p usr/bin ${bootdir} usr/lib/modules/${kver} usr/share usr/etc
kernel_path=${bootdir}/vmlinuz kernel_path=${bootdir}/vmlinuz
initramfs_path=${bootdir}/initramfs.img initramfs_path=${bootdir}/initramfs.img
# the HMAC file is only in /usr/lib/modules
hmac_path=usr/lib/modules/${kver}/.vmlinuz.hmac
# /usr/lib/modules just uses "vmlinuz", since the version is in the module # /usr/lib/modules just uses "vmlinuz", since the version is in the module
# directory name. # directory name.
if [[ $bootdir != usr/lib/modules/* ]]; then if [[ $bootdir != usr/lib/modules/* ]]; then
@ -403,6 +405,7 @@ setup_os_repository () {
fi fi
echo "a kernel" > ${kernel_path} echo "a kernel" > ${kernel_path}
echo "an initramfs" > ${initramfs_path} echo "an initramfs" > ${initramfs_path}
echo "an hmac file" > ${hmac_path}
bootcsum=$(cat ${kernel_path} ${initramfs_path} | sha256sum | cut -f 1 -d ' ') bootcsum=$(cat ${kernel_path} ${initramfs_path} | sha256sum | cut -f 1 -d ' ')
export bootcsum export bootcsum
# Add the checksum for legacy dirs (/boot, /usr/lib/ostree-boot), but not # Add the checksum for legacy dirs (/boot, /usr/lib/ostree-boot), but not

View File

@ -43,6 +43,7 @@ ${CMD_PREFIX} ostree admin deploy --karg=root=LABEL=MOO --karg=quiet --os testos
assert_file_has_content out.txt "Bootloader updated.*" assert_file_has_content out.txt "Bootloader updated.*"
assert_file_has_content sysroot/boot/loader/entries/ostree-1-testos.conf 'options.* root=LABEL=MOO' assert_file_has_content sysroot/boot/loader/entries/ostree-1-testos.conf 'options.* root=LABEL=MOO'
assert_file_has_content sysroot/boot/ostree/testos-${bootcsum}/vmlinuz-3.6.0 'a kernel' assert_file_has_content sysroot/boot/ostree/testos-${bootcsum}/vmlinuz-3.6.0 'a kernel'
assert_file_has_content sysroot/boot/ostree/testos-${bootcsum}/.vmlinuz-3.6.0.hmac 'an hmac file'
assert_file_has_content sysroot/boot/ostree/testos-${bootcsum}/initramfs-3.6.0.img 'an initramfs' assert_file_has_content sysroot/boot/ostree/testos-${bootcsum}/initramfs-3.6.0.img 'an initramfs'
echo "ok generate bls config on first deployment" echo "ok generate bls config on first deployment"

View File

@ -21,6 +21,11 @@
set -euo pipefail set -euo pipefail
if ! ostree --version | grep -q -e '- libarchive'; then
echo "1..0 #SKIP no libarchive support compiled in"
exit 0
fi
. $(dirname $0)/libtest.sh . $(dirname $0)/libtest.sh
setup_test_repository "archive" setup_test_repository "archive"

View File

@ -199,16 +199,15 @@ test_get_value_with_default_group_optional (void)
static void static void
test_copy_group (void) test_copy_group (void)
{ {
g_auto(GStrv) keys = NULL; gsize length, length2;
g_auto(GStrv) keys2 = NULL;
gsize length, length2, ii;
GKeyFile *tmp = g_key_file_new ();
const char *section = "section"; const char *section = "section";
GLogLevelFlags always_fatal_mask; GLogLevelFlags always_fatal_mask;
/* Avoid that g_return_val_if_fail causes the test to fail. */ /* Avoid that g_return_val_if_fail causes the test to fail. */
always_fatal_mask = g_log_set_always_fatal (0); always_fatal_mask = g_log_set_always_fatal (0);
g_autoptr(GKeyFile) tmp = g_key_file_new ();
g_assert_false (ot_keyfile_copy_group (NULL, tmp, section)); g_assert_false (ot_keyfile_copy_group (NULL, tmp, section));
g_assert_false (ot_keyfile_copy_group (g_keyfile, NULL, section)); g_assert_false (ot_keyfile_copy_group (g_keyfile, NULL, section));
g_assert_false (ot_keyfile_copy_group (g_keyfile, tmp, NULL)); g_assert_false (ot_keyfile_copy_group (g_keyfile, tmp, NULL));
@ -218,21 +217,17 @@ test_copy_group (void)
g_assert_true (ot_keyfile_copy_group (g_keyfile, tmp, section)); g_assert_true (ot_keyfile_copy_group (g_keyfile, tmp, section));
keys = g_key_file_get_keys (g_keyfile, section, &length, NULL); g_auto(GStrv) keys = g_key_file_get_keys (g_keyfile, section, &length, NULL);
keys2 = g_key_file_get_keys (tmp, section, &length2, NULL); g_strfreev (g_key_file_get_keys (tmp, section, &length2, NULL));
g_assert_cmpint(length, ==, length2); g_assert_cmpint(length, ==, length2);
for (ii = 0; ii < length; ii++) for (gsize ii = 0; ii < length; ii++)
{ {
g_autofree char *value = NULL; g_autofree char *value = g_key_file_get_value (g_keyfile, section, keys[ii], NULL);
g_autofree char *value2 = NULL; g_autofree char *value2 = g_key_file_get_value (g_keyfile, section, keys[ii], NULL);
value = g_key_file_get_value (g_keyfile, section, keys[ii], NULL);
value2 = g_key_file_get_value (g_keyfile, section, keys[ii], NULL);
g_assert_cmpstr (value, ==, value2); g_assert_cmpstr (value, ==, value2);
} }
g_key_file_free (tmp);
} }
static void static void

View File

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