mirror of
https://github.com/flatpak/flatpak.git
synced 2026-05-18 13:52:53 -04:00
oci: Make libzstd optional (and disable OCI deltas if not there)
This commit is contained in:
committed by
Alexander Larsson
parent
31612d7568
commit
4539d186a5
@@ -178,6 +178,7 @@ libflatpak_common_la_CFLAGS = \
|
||||
-I$(srcdir)/dbus-proxy \
|
||||
$(AM_CFLAGS) \
|
||||
$(ARCHIVE_CFLAGS) \
|
||||
$(ZSTD_CFLAGS) \
|
||||
$(BASE_CFLAGS) \
|
||||
$(DCONF_CFLAGS) \
|
||||
$(HIDDEN_VISIBILITY_CFLAGS) \
|
||||
@@ -195,6 +196,7 @@ libflatpak_common_la_CFLAGS = \
|
||||
libflatpak_common_la_LIBADD = \
|
||||
$(AM_LIBADD) \
|
||||
$(ARCHIVE_LIBS) \
|
||||
$(ZSTD_LIBS) \
|
||||
$(BASE_LIBS) \
|
||||
$(DCONF_LIBS) \
|
||||
$(INTERNAL_GPGME_LIBS) \
|
||||
|
||||
@@ -1891,6 +1891,11 @@ flatpak_oci_registry_find_delta_manifest (FlatpakOciRegistry *registry,
|
||||
g_autoptr(FlatpakOciVersioned) deltaindexv = NULL;
|
||||
FlatpakOciDescriptor *delta_desc;
|
||||
|
||||
#ifndef HAVE_ZSTD
|
||||
if (TRUE)
|
||||
return NULL; /* Don't find deltas if we can't apply them */
|
||||
#endif
|
||||
|
||||
deltaindexv = flatpak_oci_registry_load_versioned (registry, oci_repository, "_deltaindex",
|
||||
NULL, cancellable, NULL);
|
||||
if (deltaindexv == NULL)
|
||||
|
||||
@@ -3,8 +3,10 @@
|
||||
#include "flatpak-zstd-decompressor-private.h"
|
||||
|
||||
#include <errno.h>
|
||||
#include <zstd.h>
|
||||
#include <string.h>
|
||||
#ifdef HAVE_ZSTD
|
||||
#include <zstd.h>
|
||||
#endif
|
||||
|
||||
static void flatpak_zstd_decompressor_iface_init (GConverterIface *iface);
|
||||
|
||||
@@ -12,7 +14,9 @@ struct _FlatpakZstdDecompressor
|
||||
{
|
||||
GObject parent_instance;
|
||||
|
||||
#ifdef HAVE_ZSTD
|
||||
ZSTD_DStream *dstream;
|
||||
#endif
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE (FlatpakZstdDecompressor, flatpak_zstd_decompressor, G_TYPE_OBJECT,
|
||||
@@ -22,11 +26,13 @@ G_DEFINE_TYPE_WITH_CODE (FlatpakZstdDecompressor, flatpak_zstd_decompressor, G_T
|
||||
static void
|
||||
flatpak_zstd_decompressor_finalize (GObject *object)
|
||||
{
|
||||
#ifdef HAVE_ZSTD
|
||||
FlatpakZstdDecompressor *decompressor;
|
||||
|
||||
decompressor = FLATPAK_ZSTD_DECOMPRESSOR (object);
|
||||
|
||||
ZSTD_freeDStream (decompressor->dstream);
|
||||
#endif
|
||||
|
||||
G_OBJECT_CLASS (flatpak_zstd_decompressor_parent_class)->finalize (object);
|
||||
}
|
||||
@@ -34,7 +40,9 @@ flatpak_zstd_decompressor_finalize (GObject *object)
|
||||
static void
|
||||
flatpak_zstd_decompressor_init (FlatpakZstdDecompressor *decompressor)
|
||||
{
|
||||
#ifdef HAVE_ZSTD
|
||||
decompressor->dstream = ZSTD_createDStream ();
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -58,9 +66,11 @@ flatpak_zstd_decompressor_new (void)
|
||||
static void
|
||||
flatpak_zstd_decompressor_reset (GConverter *converter)
|
||||
{
|
||||
#ifdef HAVE_ZSTD
|
||||
FlatpakZstdDecompressor *decompressor = FLATPAK_ZSTD_DECOMPRESSOR (converter);
|
||||
|
||||
ZSTD_initDStream (decompressor->dstream);
|
||||
#endif
|
||||
}
|
||||
|
||||
static GConverterResult
|
||||
@@ -74,6 +84,7 @@ flatpak_zstd_decompressor_convert (GConverter *converter,
|
||||
gsize *bytes_written,
|
||||
GError **error)
|
||||
{
|
||||
#ifdef HAVE_ZSTD
|
||||
FlatpakZstdDecompressor *decompressor;
|
||||
ZSTD_inBuffer input = { inbuf, inbuf_size, 0 };
|
||||
ZSTD_outBuffer output = {outbuf, outbuf_size, 0 };
|
||||
@@ -84,11 +95,10 @@ flatpak_zstd_decompressor_convert (GConverter *converter,
|
||||
if (decompressor->dstream == NULL)
|
||||
{
|
||||
g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
|
||||
"Failed to initialize libzst");
|
||||
"Failed to initialize libzstd");
|
||||
return G_CONVERTER_ERROR;
|
||||
}
|
||||
|
||||
|
||||
res = ZSTD_decompressStream(decompressor->dstream, &output , &input);
|
||||
if (ZSTD_isError (res))
|
||||
{
|
||||
@@ -115,6 +125,12 @@ flatpak_zstd_decompressor_convert (GConverter *converter,
|
||||
}
|
||||
|
||||
return G_CONVERTER_CONVERTED;
|
||||
|
||||
#else
|
||||
g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
|
||||
"libzstd not available");
|
||||
return G_CONVERTER_ERROR;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
@@ -210,10 +210,14 @@ AC_SUBST([GDBUS_CODEGEN], [`$PKG_CONFIG --variable gdbus_codegen gio-2.0`])
|
||||
|
||||
POLKIT_GOBJECT_REQUIRED=0.98
|
||||
|
||||
PKG_CHECK_MODULES(ARCHIVE, [libarchive >= 2.8.0 libzstd])
|
||||
PKG_CHECK_MODULES(ARCHIVE, [libarchive >= 2.8.0])
|
||||
PKG_CHECK_MODULES(BASE, [glib-2.0 >= $GLIB_REQS gio-2.0 gio-unix-2.0])
|
||||
PKG_CHECK_MODULES(SOUP, [libsoup-2.4])
|
||||
PKG_CHECK_MODULES(XML, [libxml-2.0 >= 2.4])
|
||||
PKG_CHECK_MODULES(ZSTD, [libzstd >= 0.8.1], [have_zstd=yes], [have_zstd=no])
|
||||
if test $have_zstd = yes; then
|
||||
AC_DEFINE(HAVE_ZSTD, 1, [Define if libzstd is available])
|
||||
fi
|
||||
PKG_CHECK_MODULES(DCONF, [dconf >= 0.26], [have_dconf=yes], [have_dconf=no])
|
||||
if test $have_dconf = yes; then
|
||||
AC_DEFINE(HAVE_DCONF, 1, [Define if dconf is available])
|
||||
@@ -555,4 +559,5 @@ echo " Privilege mode: $with_priv_mode"
|
||||
echo " Use dconf: $have_dconf"
|
||||
echo " Use libsystemd: $have_libsystemd"
|
||||
echo " Use libmalcontent: $have_libmalcontent"
|
||||
echo " Use libzstd: $have_zstd"
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user