| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Since we now use POSIX file functions only in tbdiff-create, we
no longer need tbd_stat_fopen, so it's been removed.
|
|
|
|
|
|
|
|
| |
This keeps the code consistent by using the same file functions
internally as are used when reading from or writing to the stream.
The code is also simplified somewhat since POSIX file operations
are cleaner and more consistent than stdio.
|
|
|
|
|
|
|
| |
POSIX file functions are more consistent and simple, originally
stdio was used to make the code as portable as possible, however
since it now relies on POSIX functionality anyway there's no need
for the inconsistency.
|
|
|
|
|
|
|
|
|
| |
Quoted includes should be used when including headers which
represent declarations in local source files. The source files have
been modified to reflect this.
This makes it more clear which headers are system headers and which
are part of the tbdiff codebase.
|
|
|
|
|
|
|
|
|
|
|
|
| |
POSIX reserves the use of the underscore T postfix for types,
since most of the time we don't actually need to typedef the types
and since it's more clear to prefix structs and enums with the
struct and enum keywords, I've removed all uses of typedef and
gone with the more simple approach used in the kernel.
One typedef remains which is tbd_cmd_type, since this should be
a native type of a fixed size. The postfix changed to type to show
that it's a type and to ensure it doesn't collide with POSIX.
|
|
|
|
|
|
| |
The extern keyword is not needed since it's the default property
for a function, it also takes up extra space on the line which
leads to more wrapping.
|
|\
| |
| |
| |
| | |
Reviewed-by: Richard Maw
Reviewed-by: Lars Wirzenius
|
| |
| |
| |
| |
| |
| | |
The compiler currently warns that the result of chown is ignored,
for now we'll print a warning when the chown operation fails, but
it'll need to be handled as an error eventually.
|
| |
| |
| |
| |
| | |
Use the TBD_DEBUG macro since it will be disabled when debug is
disabled, otherwise we'd always print the error message.
|
| |
| |
| |
| |
| | |
We now use the TBD_DEBUG macro rather than fprintf, this means that
debug messages aren't printed when debugging is disabled.
|
| |
| |
| |
| |
| |
| |
| | |
Added TBD_WARN and TBD_DEBUG macros to allow for warnings and
debug messages to be printed. This will make current debugging
messages cleaner and allow us to warn when the chown operation
fails.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
The implementation currently uses fread and fwrite which are
specific functions in stdlib, however this is an implementation
detail and in the future these functions may not be used, so it
doesn't make sense to name the higher level functions based on
the function they use underneath.
|
| |
| |
| |
| |
| | |
Also removed because size_t can vary in size across platforms,
which makes it unsuitable for storing in our diff stream.
|
| | |
|
| |
| |
| |
| |
| | |
The externs are not required but it's inkeeping with the other
headers which all currently have them.
|
| |
| |
| |
| |
| |
| |
| |
| | |
Simplify the endian swapping by always calling the endian macro
and only implementing it when the platform is big-endain.
The endian swapping function has also been made a little more
obvious and now uses a byteswap inline function to swap the bytes.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
The parent pointer in tbd_stat_t was void since it pointed to
itself, to make the code more clear I've typedef'd the struct
above so that the pointer can now point to itself as an
incomplete type.
|
| |
| |
| |
| |
| |
| | |
Previously commands were just treated as a uint8_t and given the value of
and enum. This is now made more clear in the code by defining tbd_cmd_t as
a uint8_t below the enum in tbdiff-common.h.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
There were a lot of instances where on error the code would fail
to close the opened file pointer.
|
| |
| |
| |
| | |
On error the duplicated string in 'name' would have leaked.
|
| |
| |
| |
| |
| |
| | |
The man page for lsetxattr says that ENOATTR is a synonym of ENODATA,
since ENOATTR is not always available in sys/xattr.h we'll use
ENODATA instead.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
On my system tbdiff failed to build because attr/xattr doesn't
exist, also the attr package was not easy to find.
On searching I discovered that the functionality we use in attr.h
is provided by modern versions of libc, as shown here:
https://bugzilla.kernel.org/show_bug.cgi?id=70141
This patch falls back to using libc sys/xattr.h when attr/xattr.h
is unavailable.
|
| | |
|
|/
|
|
|
| |
Some issues in the TODO file have been resolved and no longer apply,
these issues have been removed.
|
|\
| |
| |
| |
| |
| | |
Reviewed-by: Richard Maw
Reviewed-by: Lars Wirzenius
Reviewed-by: Sam Thursfield
|
| |
| |
| |
| |
| |
| |
| | |
baserock-system-config-sync
This is helpful when deploying an upgrade to a system that doesn't
already have baserock-system-config-sync installed.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is part of the upgrades work. With this tool you
can now switch between versions of the OS, remove a
version, list all the versions present in the system, get
the default version and the running version, and deploy
a new system.
All of the above is possible with the following subcommands:
- list
- deploy
- get-default
- get-running
- remove
- set-default
It also activates a bootloader menu to choose a version
to boot. The menu is important to make sure the user can
boot the old OS if the new kernel doesn't work.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This change is to ensure the existing users will exist after an
upgrade. Otherwise, if there are merge conflicts when upgrading,
the users will be lost and the root password will be deactivated.
If that happens and the only way to access to the system is
through ssh and the system was rebooted after the upgrade (manually
or automatically) then the system won't be accessible anymore.
This change also means that we can no longer make changes to the
base /etc/passwd or /etc/group in the 'fhs-dirs' chunk without adding
a manual hook to add the new users/groups when upgrading old systems.
In the following link is the email thread where was discussed this issue:
http://vlists.pepperfish.net/pipermail/baserock-dev-baserock.org/2014-March/004581.html
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Since with 'system-version-manager' is possible to change
the default system, 'baserock-system-config-sync' shouldn't
get the default system, and get an extra parameter to choose
the system version to merge.
|
| |
| |
| |
| |
| |
| |
| | |
When one file is present in v1 and in vUser, and is not present in
v2, baserock-system-config-sync copies vUser version of the file.
This was happening before this commit, but it was wrong explained
in the behaviour table.
|
|/
|
|
|
| |
If a file was removed in vUser, and v2 doesn't have a new one,
then the file is not longer needed.
|
|\
| |
| |
| | |
Reviewed-by: Richard Maw
|
| |
| |
| |
| |
| |
| |
| | |
When vu == v2, the script tried to reverse the patch. Now this
won't happen again.
Also added '-f' flag calling 'patch' to prevent also reverse patching.
|
| | |
|
|/
|
|
|
| |
'baserock-system-config-sync' is doing reverse patching when
that happens. This test is to check the expected behaviour.
|
|\
| |
| |
| |
| | |
Reviewed-by: Richard Maw
Reviewed-by: Sam Thursfield
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
baserock-sytem-config-sync:
Changes here are caused by a bug found in GNU patch
managing the permissions of the files when using the
patch command like:
patch <file_to_apply_patch> -t -o <output_file>
To reproduce the bug:
echo foo > file1
echo bar > file2
diff -u file1 file2 | patch 1 -t -o file3
ls -l
You can check that the permissions of 'file3' are different
than the permissions of 'file1' or 'file2'.
To avoid the bug, this patch changes the way we are using
patch, using it as following:
patch <file_to_apply_patch> -t
Since the output file is not specified, the output file will
be the file in which we want to apply the patch. And
due we cannot specify the output file, we are copying
the file to the destination directory, and then applying
the patch there.
As a consequence of changing the way of using patch, now
'patch' generates an extra file when patching fails. This
file is added in the test suite also in this commit.
|
|/ |
|
|\ |
|
| |
| |
| |
| | |
name, and explicitly ask for a unified diff
|
|/ |
|