Commit Graph

1930 Commits

Author SHA1 Message Date
Giuseppe Scrivano 50c69c3392 keyfile-utils: add tests
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2015-03-06 18:45:37 +01:00
Giuseppe Scrivano 021c55f430 ot_keyfile_copy_group: return FALSE on invalid inputs
The function returns a gboolean, replace g_return_if_fail with
g_return_val_if_fail.

Add similar checks to the other functions.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2015-03-06 18:45:37 +01:00
Giuseppe Scrivano bfd92653c3 ostree-repo-refs: Drop unused function "parse_rev_file".
If it will be needed in future, it can be retrieved from the git
history.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2015-03-06 18:45:37 +01:00
Giuseppe Scrivano 150048f9b8 src: drop some dead assignments
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2015-03-06 18:45:37 +01:00
Matthew Barnes c2b01adbf0 OstreeGpgVerifier: Take the signature as a GBytes
The signature data is in memory to begin with, so there's no need to
write it to disk only to immediately read it back.

Also, because the GPGME multi-keyring workaround is somewhat expensive
to setup and teardown, concatenate all signatures into a single GBytes
so _ostree_gpg_verifier_check_signature() is only called once.  We're
currently only looking for one valid signature anyway.
2015-03-06 08:22:44 -05:00
Matthew Barnes 70cabcea0a gpg: Rewrite OstreeGpgVerifier to use GPGME
This sets the stage for more advanced signature management.

(Also, talking to GPG over pipes sucks.)

Previously we were spawning gpgv2 with a bunch of --keyring options
for /usr/share/ostree/trusted.gpg.d/ and whatever other keyring files
were explicitly added.  GPGME has no public API for multiple keyrings,
so we work around the issue by setting up a temp directory to serve as
a fake "home" directory for the crypto engine and then concatenate all
the keyring files into a single public keyring (pubring.gpg).

Unfortunately at present we do this on every signature verification.
There's a desire to cache this concatenation, but the problem is the
user may be unprivileged.  So it seems the cache would have to be per
user under $XDG_CACHE_HOME, which OSTree doesn't otherwise use.  I'm
open to suggestions.

We do at least clean up the temp directory when finished, and I have
further API changes planned to OstreeGpgVerifier to help mitigate the
performance impact.
2015-03-06 08:22:44 -05:00
Giuseppe Scrivano d414ee5852 tests: add tests for mutable tree.
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2015-03-04 17:52:17 -05:00
Colin Walters 191d78ebfc repo: Fix assertion to allow NULL options
Spotted by Adam Coldrick.
2015-03-03 21:18:40 -05:00
Colin Walters d750e2e2eb commit: Add missing (allow-none) in write_ref_immediate()
Spotted by Adam Coldrick.
2015-03-03 21:16:33 -05:00
Colin Walters 67cec3a4de deltas: Use mmap() instead of copying input file
It's more efficient.
2015-03-03 18:39:45 -05:00
Colin Walters 3e3eb01335 deltas: Gather statistics on total number rollsum'd and bsdiff'd
Useful for debugging at least.  Though in the future it'd be nice to
store this inside the delta metadata maybe?
2015-03-03 18:32:24 -05:00
Giuseppe Scrivano aeafdfff05 tests: Remove some duplications from Makefile-tests.am
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2015-03-03 18:32:24 -05:00
Giuseppe Scrivano aea173b3f8 tests: enforce ${CMD_PREFIX} on all ostree processes
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2015-03-03 18:32:24 -05:00
Giuseppe Scrivano 948327fb67 ostree_repo_static_delta_generate: add new param "verbose"
it will be used by the next patch that adds "--generate-static-delta"
to the commit command.

As part of the patch, update the list of supported "params" in the
documentation.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2015-03-03 12:16:17 -05:00
Colin Walters 392929d9bc static-delta: Add --disable-bsdiff option
A builder may not want to pay the CPU penalty.  Also it's useful for
evaluating performance.
2015-03-03 12:16:17 -05:00
Giuseppe Scrivano 9843c4c245 Makefile.dist-packaging: fix make rpm with submodules
Makefile.dist-packaging seems to assume to be run under packaging/ as
"make -C packaging -f Makefile.dist-packaging rpm" so ensure the
srcdir is set correctly to point to the parent directory.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2015-03-03 12:16:17 -05:00
Giuseppe Scrivano 494d3535e4 Fix "make syntax-check" failures.
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2015-03-03 12:16:17 -05:00
Giuseppe Scrivano 9e3a018d85 autogen.sh: replace all $(libbsdiff_srcpath) and $(libglnx_srcpath)
The variable could be specified more times on the same line, having
something like:

EXTRA_DIST += ./libglnx/README $(libglnx_srcpath)/COPYING

Now the change ensures that it looks like:

EXTRA_DIST += ./libglnx/README ./libglnx/COPYING

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2015-03-03 12:16:17 -05:00
Giuseppe Scrivano 6029f4d820 tests: add test for bsdiff
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2015-03-03 12:16:17 -05:00
Giuseppe Scrivano 439e1c1b97 static-delta: increase threshold for rollsum to 50%
It favours bsdiff usage for files that are not very rollsum friendly.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2015-03-03 12:16:17 -05:00
Giuseppe Scrivano 3f3bb8e37d Add bsdiff support to deltas
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2015-03-03 12:16:17 -05:00
Giuseppe Scrivano a705d9cf29 Add bsdiff submodule
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2015-03-03 12:16:17 -05:00
Colin Walters 488efac728 repo: Port hardlink-scanning code to fd-relative calls
Continuing the migration.
2015-03-03 11:48:41 -05:00
Colin Walters 6e0d92db00 repo: Drop internal GFile* API helper
There are no users anymore.
2015-03-03 11:48:41 -05:00
Colin Walters 5b3a495018 deploy: Use glnx file copy code
This is centralizing more generic utility code in libglnx.
2015-03-03 11:48:41 -05:00
Matthew Barnes c107561171 core: Fix duplication bug in _ostree_detached_metadata_append_gpg_sig()
g_variant_builder_add() does not replace identical keys in a VARDICT
variant, so signing a commit multiple times results in multiple copies
of "ostree.gpgsigs" in the metadata.  And since g_variant_lookup_value()
stops on the first match, subsequent signatures have no net effect.

Instead of GVariantBuilder use GVariantDict, which behaves more like a
hash table.
2015-03-02 15:13:49 -05:00
Matthew Barnes c04f9f47e3 core: Add definitions for GPG signature metadata
_OSTREE_METADATA_GPGSIGS_NAME
_OSTREE_METADATA_GPGSIGS_TYPE
2015-03-02 15:12:06 -05:00
Matthew Barnes fdda36eb77 libotutil: Allow no variant in ot_util_variant_builder_from_variant()
For programming convenience in cases where we may or may not have a
GVariant to initialize the builder with.
2015-03-02 15:12:06 -05:00
Matthew Barnes b05d670031 libotutil: Remove ot_variant_new_from_bytes()
Not needed anymore - use g_variant_new_from_bytes().
2015-03-02 15:12:06 -05:00
Matthew Barnes 85933c7cca configure.ac: Bump GLib requirement to 2.40
Mainly for GVariantDict, useful for metadata.
2015-03-02 15:06:46 -05:00
Matthew Barnes 0bae648977 gpg: Remove _ostree_gpg_verifier_set_homedir()
Never called, and the setting is never applied anyway.
2015-03-02 12:03:04 -05:00
Matthew Barnes a5b002dae6 ostree: Add gpg-sign command
Signs a commit with one or more GPG keys.
2015-02-26 12:53:01 -05:00
Colin Walters 152dcf89b5 repo: detached sigs: Use error prefixing instead of overwriting
Noted when "rpm-ostree compose sign" failed to write to a repo due to
permissions.
2015-02-25 10:39:15 -05:00
Colin Walters ace982b51c prepare-root: Move /sysroot instead of unmounting it
I originally thought this would fix a regression, but it turns out
this wasn't the bug.  But pushing anyways as it's just cleaner.

https://bugzilla.gnome.org/show_bug.cgi?id=743891
2015-02-24 15:06:35 -05:00
Giuseppe Scrivano 0a7a70ed67 build: build libbupsplit separately
It avoids gobject-introspection warnings:

src/libostree/bupsplit.h:42: Warning: OSTree: symbol='bupsplit_find_ofs': Unknown namespace for symbol 'bupsplit_find_ofs'
src/libostree/bupsplit.h:43: Warning: OSTree: symbol='bupsplit_selftest': Unknown namespace for symbol 'bupsplit_selftest'
src/libostree/bupsplit.h:33: Warning: OSTree: symbol='BUP_BLOBBITS': Unknown namespace for symbol 'BUP_BLOBBITS'
src/libostree/bupsplit.h:34: Warning: OSTree: symbol='BUP_BLOBSIZE': Unknown namespace for symbol 'BUP_BLOBSIZE'
src/libostree/bupsplit.h:35: Warning: OSTree: symbol='BUP_WINDOWBITS': Unknown namespace for symbol 'BUP_WINDOWBITS'
src/libostree/bupsplit.h:36: Warning: OSTree: symbol='BUP_WINDOWSIZE': Unknown namespace for symbol 'BUP_WINDOWSIZE'

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2015-02-23 17:07:13 -05:00
Giuseppe Scrivano 22af1d9633 ostree-repo-static-delta-processing: initialize "modev"
Can be gs_unref_variant'ed on an early error.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2015-02-23 16:41:42 -05:00
Giuseppe Scrivano 52822efd32 Fix GObject introspection annotation
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2015-02-23 16:41:42 -05:00
Giuseppe Scrivano 50cd3e971a ostree-repo-traverse.c: Fix documentation parameter name
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2015-02-23 16:41:42 -05:00
Colin Walters 2f205331f4 tests: Move test gpg keyring into writable tmpdir
At least the version of gpgme in RHEL7 wants to create a lock file,
work around this by copying it into the writable test temporary
directory.
2015-02-23 15:21:23 -05:00
Matthew Barnes 12c8ef1425 Add explicit zlib dependency
Needed for CRC32 computations.
2015-02-23 14:48:52 -05:00
Colin Walters 3b3708c312 repo: Port APIs used by prune to fd-relative *at calls
More of the general trend away from GFile * to the faster and more
secure world of *at().
2015-02-22 23:20:12 -05:00
Colin Walters 474b071055 libglnx: Use git.gnome.org's copy
Not the master from my laptop.
2015-02-22 22:30:53 -05:00
Colin Walters 46bd4657b2 checkout: Drop internal use of GFile *
Checkout was one of the first complex code paths I tried to convert to
*at().  I ended up keeping both, because I hit the "xattrs for a
symlink" problem.  Later, Florian gave me a workaround, and we started
using it here, but the GFile * parameters weren't deleted.  They're
not used, so do so now.
2015-02-22 21:30:23 -05:00
Colin Walters 9539408bb3 deploy: Also look for /usr/lib/os-release
With newer versions of systemd, the file has moved there.
2015-02-22 21:02:27 -05:00
Colin Walters 965a304a17 Use libglnx
Starting down the path of not using libgsystem.  The main win here
will be code sharing between ostree/rpm-ostree as well as going down
the path of not using GFile * for local files.
2015-02-22 21:02:27 -05:00
Giuseppe Scrivano ef53e0100b tests: do not run tests/test-rollsum as part of make check
it is not really a unit test.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>

Conflicts:
	Makefile-tests.am
2015-02-21 17:19:20 -05:00
Matthew Barnes 5aa0d51d7a repo: Check for OSTREE_REPO in ostree_repo_new_default()
Convenience feature to avoid having to pass --repo options repeatedly.

Before falling back to the default system repository path, check for a
repository path defined by the OSTREE_REPO environment variable.
2015-02-19 20:44:34 -05:00
Daniel Drake 7c267d6089 libostree: set directory mtimes to 0 on checkout
We already set all file mtimes to 0 so that they are constant
over all checkouts, and can be made constant with a known value from
the system where the ostree was created.

However, this was not happening for directories. Zero their mtimes too.

This is important for shipping a fontconfig cache in the ostree;
the fontconfig cache files embed a directory mtime.
2015-02-18 18:27:18 -05:00
Colin Walters c2d439f115 tests: Restore accidentally deleted Makefile bit
Not sure how this got deleted...
2015-02-16 10:29:14 -05:00
Colin Walters c54df89771 deltas: Search for similar objects (possibly renamed across directories)
The previous diff algorithm was file tree based, and only looked
at modified files that lived at the same path.

However, components like the Linux kernel have versioned
subdirectories, e.g. /usr/lib/modules/$kver/.../ext4.ko.  We want to
be able to detect these "modified renames" so that we can compute
diffs (rollsum, bsdiff).
2015-02-16 10:10:35 -05:00