Khem Raj [Wed, 22 Feb 2023 22:55:07 +0000 (14:55 -0800)]
meson: Use global function in argp check
clang is optimizing away parse_opt() since its marked static and not
used in main(), make life a bit harder for clang :)
removing static now emits the global symbols to be resolved during link
and when libargp is missing the error is thrown rightly
riscv64-yoe-linux-musl-ld: /tmp/a-5ba039.o: in function `.Lpcrel_hi0':
a.c:(.text+0x44): undefined reference to `argp_state_help'
clang-16: error: linker command failed with exit code 1 (use -v to see invocation)
Jonathan Dieter [Sat, 18 Feb 2023 20:54:28 +0000 (20:54 +0000)]
Add ZCK_NO_WRITE option to disable writing to a file
There are situations where we need to recreate the zchunk header for an
uncompressed file without actually writing out the zchunk file. This
commit allows setting an `ioption`, `ZCK_NO_WRITE`, that will go through
the full process of creating the zchunk file without actually writing it
to disk, leaving you with a complete zchunk header in the end.
Signed-off-by: Jonathan Dieter <jdieter@gmail.com>
Jonathan Dieter [Mon, 6 Feb 2023 22:36:06 +0000 (22:36 +0000)]
Clarify what the primary benefit of zchunk is
zstd now offers rsync-friendly output, so mentioning that zchunk files are
efficient over rsync misses the primary benefit zchunk has, namely that
zchunk files can be downloaded efficiently from normal web servers that
support range requests (which is basically all of them, except for some
rather strange proxies).
Signed-off-by: Jonathan Dieter <jdieter@gmail.com>
James Hilliard [Wed, 4 May 2022 22:32:48 +0000 (16:32 -0600)]
zck: declare write_data as static
This needs to be declared static to avoid a symbol conflict:
io.c:(.text+0xe8): multiple definition of `write_data'; src/zck.p/zck.c.o:zck.c:(.text+0x1f4): first defined here
Jonathan Dieter [Mon, 18 Apr 2022 16:37:19 +0000 (17:37 +0100)]
Various fixes to make Coverity happy
The single high severity issue was only triggerable if we were unable to
allocate memory and involved a memory leak. The other issues all revolve
around issues like making sure we check return values of functions we call.
Signed-off-by: Jonathan Dieter <jdieter@gmail.com>
Jonathan Dieter [Sat, 12 Mar 2022 14:27:19 +0000 (14:27 +0000)]
Fix size limit in zck.c
Up to now zck.c reads the whole file into memory and then sends it to
zck_write to actually compress. This is highly inefficient, but was done
to simplify dealing with a string separator. This commit fixes this by
reading the file in chunks, and, if using a string separator, keeps track
of the matching bytes from chunk to chunk.
Signed-off-by: Jonathan Dieter <jdieter@gmail.com>
Jonathan Dieter [Sun, 20 Feb 2022 17:07:24 +0000 (17:07 +0000)]
Merge pull request #70 from zchunk/1.2.0
Release zchunk 1.2.0 with the following changes:
* Now builds for Windows
* Can set `--uncompressed` flag when creating zchunk files to also store uncompressed digests
* `zck_read_header` now indicates whether there's a dictionary and what flags are enabled in the zchunk file
* Minimum meson version required to build zchunk is now 0.53
* Switched to use GitHub actions for automated testing
* Added the following automated test environments:
* `centos-8-stream`
* `centos-9-stream`
* `ubuntu-lts`
* `windows`, both using Mamba and meson-wrap
* `macos`
Eli Schwartz [Wed, 5 Jan 2022 04:45:20 +0000 (23:45 -0500)]
meson: add subproject fallback for zstd
installed via the command:
```
meson wrap install zstd
```
This file does nothing, unless a dependency cannot be found; in that
case, instead of failing, meson will download a private copy of the
dependency and build + link to that instead.
(This is especially common on Windows, where managing dependencies
without a package manager can be difficult.)
Alternatively, users interested in specifically building a statically
linked / portable executable can configure meson with
`--wrap-mode=forcefallback` to prefer the private copy.
Eli Schwartz [Wed, 5 Jan 2022 04:42:03 +0000 (23:42 -0500)]
meson: fix incorrect use of global arguments to set symbol visibility
add_global_arguments applies to all subprojects, or more usually, fails.
The meson docs suggest that add_project_arguments is probably preferable
for this reason.
However, in this case it should only be applied to a single library as a
workaround for supporting older versions of meson. Move it to a
per-target c_args instead, for the same effect.