OSTree can sometimes print very long lines which lead to many empty
spaces getting printed if the output overflowed the line due to a bug in
libglnx.
Reported-by: Gatis Paeglis <gatis.paeglis@qt.io>
Closes: #406
Approved by: cgwalters
The checksum_b64_inplace variants can't be used in bindings. Provide
versions that allocate and return the output rather than working on a
passed in buffer. These can then be used in GI bindings to get the
ostree modified base64 encodings.
Closes: #398
Approved by: cgwalters
The tests suite was failing locally as it was using the installed
version of rofiles-fuse, instead of the built one. Create the needed
symlinks in tests/ as we are already doing for the "ostree" binary.
ostree-prepare-root and ostree-remount added for completeness.
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Closes: #395
Approved by: cgwalters
Where we're referencing local files. It's what
ostree_repo_write_directory_to_mtree() is doing internally anyways,
and I consider the `GFile*` based APIs to be generally deprecated for
the most part.
Closes: #394
Approved by: giuseppe
When trying to switch ostree to `O_TMPFILE`, I hit the fact that
by default it uses mode `000`. It still works to write to the
open fd of course, but it *doesn't* work to set xattrs because
that code path for some reason in the kernel checks the mode bits.
This only broke for bare-user repos where we tried to set the xattr
before calling `fchmod()`, so just invert those two operations.
Closes: #391
Approved by: jlebon
This reverts commit 71301d1824.
I was confused by the fact that the non-matching content was
empty and forgot we already did print it.
Reported-by: smcv
Closes: #390
Approved by: jlebon
https://github.com/ostreedev/ostree/pull/372 caused these tests to
start failing when the host system is managed using ostree - since the
tests *do* replace the `ostree=` kernel argument.
Closes: #384
Approved by: cgwalters
Conceptually the session thread owns the session, so let's clear out
everything predictably there, rather than sometimes having it happen
on the main thread.
Also, this moves up clearing the pending/outstanding queues *before*
we unreference the session, since conceptually they need to reference
it as well.
Based on a patch from: Matthew Barnes <mbarnes@redhat.com>
Closes: #383
Approved by: mbarnes
I don't think this fixes the bug I was seeing, but it makes me more
comfortable to know we have a strong ref to the main context across
the thread lifetime, and we only unset the default right before
we go away.
If something in `thread_closure_unref()` used
`g_main_context_get_thread_default()` for example it'd be wrong
before.
Closes: #383
Approved by: mbarnes
Systems like pulp may want to keep retrying in a loop if the server
throws a (hopefully transient) 500, and we need test coverage of
handling these errors versus our existing 404 and 206 coverage.
Closes: #383
Approved by: mbarnes
We clean up the temporary directory on failure, which means it's hard
to know *why* a regex didn't match. Print it when we hit an error.
Closes: #383
Approved by: mbarnes
This should fix the memory leaks in #352
This is a subset of the changes, the other part is in my pull code rewrite
Closes: #382
Approved by: cgwalters
G_DEFINE_AUTOPTR_CLEANUP_FUNC is a new function in GLib 2.44, but
libglnx contains a backported version of it. A few source files were
however using G_DEFINE_AUTOPTR_CLEANUP_FUNC either without including
libglnx.h, or without including it early enough.
This fix is similar to the one in commit d368624.
Closes#376Closes: #377
Approved by: smcv
I often want to have "idempotent" systems that iterate to a known
state. If after generating a commit, the system is interrupted, I'd
like the next run to still generate a delta. But we don't want to
regenerate if one exists, hence this option.
Closes: #375
Approved by: jlebon
distcheck tests that all the files are installed under $prefix. That
doesn't work with the systemd unit directory since the path comes from
pkg-config. Override the setting to be under $prefix in that case.
Closes: #372
Approved by: cgwalters
On some systems there may be no root= argument, so the tests for
appending /proc/cmdline arguments will fail. Instead, loop over each of
the arguments in the host's /proc/cmdline and test that they're in the
constructed config file. That will actually test if ostree added all of
the system's /proc/cmdline args correctly. The regex isn't perfect here,
but it's probably good enough for this test.
Closes: #372
Approved by: cgwalters
When creating sysroots with libostreetest, we don't get the benefit of
the OSTREE_SYSROOT_DEBUG setting in libtest.sh. That means we'll get
immutable deployments that can't be easily cleaned up.
Ensure the environment variable is set before creating new sysroots. It
would be nice to set the debug flags directly, but that's private API
that isn't currently pulled into libostreetest.
Closes: #372
Approved by: cgwalters
I've seen a few people hit this and wonder why checkouts are slow/take
space. Really, ensuring this happens is the *point* of OSTree.
Physical copies should be a last resort fallback for very unusual
situations (one of those is rpm-ostree checking out the db since
librpm doesn't know how to read from libostree).
Even I hit the fact that `/var` is a mountpoint disallowing hardlinks
with `/ostree` once and was confused. =)
Add this to the rofiles-fuse test case because it creates a mount
point.
Closes: #368
Approved by: jlebon
The program is called ro*files* and ostree creates physical
copies of directories, so changing them is fine.
I hit this when trying to do a copy checkout onto an rofiles-fuse
mount.
Closes: #368
Approved by: jlebon
libtoolize creates a version of libtool for the right architecture
in $(top_builddir), which is guaranteed to be present, and is
guaranteed to match what we are compiling (even during
cross-compilation).
Packaging systems sometimes separate /usr/bin/libtool, which is
specific to one architecture, from the libtool development files
such as libtoolize and ltmain.sh, which are architecture-independent.
For example, in Debian, libtool_*_all.deb contains the files necessary
to libtoolize a package and is depended on by the dh-autoreconf package,
but libtool-bin_*_amd64.deb (or whatever architecture) contains
/usr/bin/libtool and is not normally necessary to depend on.
Signed-off-by: Simon McVittie <smcv@debian.org>
Closes: #367
Approved by: cgwalters
There's quite a lot of changes in this release since 2016.5, but one
thing I want to call out explicitly is that we fixed a race condition
in the HTTP pull code that could cause hangs or crashes that mostly
occurred only when doing "large" pulls (thousands of object requests).
If this occurs, client systems can work around it by cancelling and
retrying the pull.
Other high level changes:
Jonathan Lebon:
ostree-repo-libarchive.c: major refactor
This laid more groundwork for rpm-ostree to import RPM (CPIO) archives
sanely. If you are integrating with an existing package management
format, this should help a lot.
Mathnerd314 (11):
repo: use OSTREE_TIMESTAMP (=1) for checked-out files
Is a quite interesting change - we previously used a timestamp of
zero, but Nix has apparently done better with `1` for various reasons.
This is a pretty subtle change, so be on the lookout for regressions.
Thanks to all contributors!
Alexander Larsson (13):
ostree export: Add --subpath support
ostree export: Add --prefix option
repo: Allow loading files staged in the transaction
repo: Fix temporary directory allocation
repo: Handle parent repos with different remote configuration
tests: Fix build with old glib
Build on older versions of glib
libotutil: Fix leak of VariantMapData
pull: Fix leak of debug temporary strings
pull: Fix leak of FetchObjectData in some cases
pull: Fix leaked uri in request_static_delta_superblock_sync
pull: Fix leak of refs_to_fetch
tests: Exit valgrind tests if a leak is detected
Colin Walters (50):
core: Remove ostree_checksum_update_meta that was not implemented
lib: Remove ostree_repo_file_make_empty_tree
Rename test-abi to test-symbols, start verifying symbols are documented
libtest: Skip FUSE if CAP_SYS_ADMIN not in bounding set
repo: Simplify internal has_object() lookup code
deploy: Start hardlinking kernel/initramfs on single-part again
build: Introduce --with-dracut=yesbutnoconf
libglnx porting: Migrate from GSConsole
repo: Fix reading repos on read-only media
repo: Add OSTREE_REPO_TEST_ERROR=pre-commit env var
repo: Add OSTREE_BOOTID override envvar for debugging
repo: Clean up staging directory for previous boot IDs
repo: Make repo/tmp expiry configurable via tmp-expiry-seconds
lib: Add more filename validations (no ., .. or /) in commit logic
libglnx porting: Migrate to glnx_stream_fstat()
build: Use --std=gnu99
trivial-httpd: Add __attribute__((format))
Make enum generation private by default, export stub symbol
build: Don't run glib-mkenums if there's nothing to do
README: x/xdg-app/flatpak/
libglnx porting: Port "load utf8 file" contents API callers
repo: Port uncompressed cache GC to libglnx
libglnx porting: Port callers of gs_file_unlink to just unlink()
libglnx porting: Port away from gs_file_ensure_directory()
sysroot: Correct error handling path in previous libglnx port
core: Port to new libglnx tempname API
lib: Change ot_util_variant_map helpers to consistently sink refs
lib: Drop GFile variant mapping API for fd-relative
libglnx porting: Port away from gs_file_map_noatime()
glnx porting: Port away from gs_file_get_basename_cached()
tests: Use strict mode by default for C tests
tests/test-pull-c: New test that runs through the pull API via C
glnx porting: Drop last uses of gs_file_get_basename_cached()
libglnx porting: Drop last use of gs_transfer_out_value()
glnx porting: Drop use of gs_file_openat_noatime
lib: Add `_ALLOW_NOENT` flag to internal variant mapping API
lib: Add a helper for mmap->bytes with openat(), use it in repo
repo: (minor) Drop a GFile usage in signature creation
lib: Fix a leak in remote parsing
lib: Add OSTREE_SUPPRESS_SYNCFS environment variable
tests: Modernize valgrind infrastructure
lib: Port some manual close() cleanups to be glnx_fd_close
manual: Link to mender.io
Add "archive" as an alias for "archive-z2"
repo: Avoid a possible divide by zero in progress
manual: Discuss mirroring
build: Fix libreaddir-rand to honor global CFLAGS
tests: Support OT_SKIP_READDIR_RAND
pull: Ensure we always process queue only from main thread
Release 2016.6
Gatis Paeglis (3):
Remove unused variables from install_deployment_kernel
Fix --enable_rofiles_fuse=no build
Fix build when have_libsoup_client_certs=no
Giuseppe Scrivano (1):
man: add missing options for commit
Jonathan Lebon (7):
ostree-repo-libarchive.c: major refactor
ot-builtin-commit.c: add --skip-list option
tests/test-libarchive.sh: add more test
tests/test-libarchive-import.c: add tests
OstreeRepo: add extensions directory
ostree_repo_write_commit: add missing docstring arg
configure.ac: properly check for bison
Krzesimir Nowak (26):
lib: Fix a typo
trivial-httpd: Remove useless code
lib: Fix an introspection annotation
tests, lib: Remove unused variables
lib: Add URL override pull option
pull: Add a --url option
trivial-httpd: Add a --log-file option
tests: Add a test for ostree pull --url
sysroot: Plug some leaks
core: Improve variant format docs
repo: Plug a leak
repo: Allow using options for fetching summary
libostree: Variant-related leak plugs and fixes
libostree: Fix bracket-missing warnings
libostree: Add g_autoptr() support for the public types
build: Remind about bumping related versions
build: Allow ostree to use g_autoptr on its types internally
build: Install new autocleanups header
libotutil: Plug a leak
core: Add a function creating an archive-z2 content stream
repo: Factor out the check of gpg result to a separate function
repo: Add a missing Returns paragraph
repo: Factor out setting up a GPG verifier
repo: Add functions for verifying any data in repository
summary: Fix a typo
repo: Fix build on 32-bit systems
Mathnerd314 (11):
commit: accept NULL subject argument
commit: Add --editor / -e command line argument
commit: Display subject/body in commit editor
commit: Don't require a subject
log: Display "(no subject)" for commits without a subject
commit: Update manpage to reflect --editor
repo: use OSTREE_TIMESTAMP (=1) for checked-out files
pull: Move libsoup-related code from ostree-repo.c to ostree-repo-pull.c
pull: Move pull and pull_onedir back into ostree-repo.c
docs: Get API docs working again
related-projects: Update with more information and projects
Micah Abbott (1):
docs: fix swapped link syntax
Sam Spilsbury (2):
Makefile: Move to AM_DISTCHECK_CONFIGURE_FLAGS
repo: Display estimated time remaining when pulling
Simon McVittie (12):
libtest: show files' contents when assertions about them fail
test-parent: this test requires user xattrs
test-sysroot.js: set "strict mode" when sourcing libtest.sh
Link libreaddir-rand to libdl
autogen.sh: rely on VPATH for submodules' Makefile-*.am.inc
build: distribute libostree.sym in tarballs
build: distribute test scripts in tarballs
build: distribute TAP helper scripts in tarballs
build: distribute more test files
libtest: make gpghome in tmpdir writeable
libostreetest: include libtest.sh from srcdir, not builddir
build: re-create tests/ostree-symlink-stamp if Makefile changes
Yu Qi Zhang (2):
refs: add "ostree refs --create" and unit tests
libglnx porting: delete temp files on failure of file creation
Git-EVTag-v0-SHA512: 216ec7ea61eeabb0404207b01387b7de85276b2fbf09e39928f4800eddac06904d690dbf66260282a1cc4127f15a68feb0a8da31921d7d943856569cb81b1d6f
-----BEGIN PGP SIGNATURE-----
iQEcBAABCgAGBQJXaCX8AAoJENxF/VkhwT8LKN8H/0G8eTKx/H+BXn72Ok/dR4Gh
P+EAsqvASavYq5y8eg5ZdAoIy8tttQdO9zX/RZIiU/QrI+iwtngL9xmjYh+fsVEo
T9YgTXbwSI6k3g4zV6BPcwPN3/PBd4esGgDnf9uEv6RjDPpuXhyPYyOnW8Rr1xth
vC4/gBEbKRlCeRCiB1E0hiYjELxu2DyESlBZfNQ0lPvxDhrp/ZlvyR3/IkQWFhao
GVJDaCot+hvdNdclHu1izHa8qfVoAMJokLXD6Y3SiQxZtokUBgNJ8EwbEJ+A0YRx
Ojl8jKwz1zmxtMz2M4qLbVKjzBecAj6t+WSbLW6x0MGZs1q235LBy0lSJIv+8SA=
=RTt1
-----END PGP SIGNATURE-----
Merge tag 'v2016.6' into upstream/latest
Release 2016.6
Add the functionality to use the same name for refs in local and remote
repos. This helps users keep track of local refs of remote origin, much
like local and remote git branches.
Previously, when a local ref is specified, resolve_refspec would fall
back to searching through remote repos if the ref is not found locally.
This function now takes an extra flag to specify whether it should
search through remote repos. Additionally, ostree_repo_resove_rev_ext
was added to call resolve_refspec with fallback_remote being false, so
refs --create would no longer complain when trying to create a local
ref of the same name as a remote one.
Fix remote repo parsing not being handled correctly on refs --create.
Closes: #363
Approved by: jlebon
In flatpak i was using a parent repo, and it failed to update
with ENOENT when dispatching an set-read-source opcode, because the
object it referenced was in the parent repo.
This fixes that by making _ostree_repo_read_bare_fd look
at parent_repo.
Closes: #362
Approved by: cgwalters
We noticed that once a ref folder is created, there is no existing
command that can remove it. For example, once "foo/bar" is created,
even if the user deletes foo or all the refs under foo, the folder
will persist.
Now when the user attempts to create a ref "foo" either through commit
or refs --create, if a folder "foo" exists but is empty of refs, the
folder is removed and the new ref "foo" is created.
New unit tests in tests-ref.sh verify this functionality.
Closes: #354
Approved by: cgwalters