00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __C_CREATEREPOLIB_DELTARPMS_H__
00021 #define __C_CREATEREPOLIB_DELTARPMS_H__
00022
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026
00027 #include <glib.h>
00028 #include <rpm/rpmlib.h>
00029 #include "package.h"
00030 #include "parsehdr.h"
00031 #include "xml_file.h"
00032
00038
00039 #define CR_DEFAULT_MAX_DELTA_RPM_SIZE 100000000
00040
00041 typedef struct {
00042 cr_Package *package;
00043 char *nevr;
00044 char *sequence;
00045 GStringChunk *chunk;
00046 } cr_DeltaPackage;
00047
00048 typedef struct {
00049 char *name;
00050 char *arch;
00051 char *epoch;
00052 char *version;
00053 char *release;
00054 char *location_href;
00055 gint64 size_installed;
00056
00057 char *path;
00058 GStringChunk *chunk;
00059 } cr_DeltaTargetPackage;
00060
00061 gboolean cr_drpm_support(void);
00062
00063 #ifdef CR_DELTA_RPM_SUPPORT
00064 char *
00065 cr_drpm_create(cr_DeltaTargetPackage *old,
00066 cr_DeltaTargetPackage *new,
00067 const char *destdir,
00068 GError **err);
00069
00070 cr_DeltaPackage *
00071 cr_deltapackage_from_drpm_base(const char *filename,
00072 int changelog_limit,
00073 cr_HeaderReadingFlags flags,
00074 GError **err);
00075
00076 void
00077 cr_deltapackage_free(cr_DeltaPackage *deltapackage);
00078
00079 GHashTable *
00080 cr_deltarpms_scan_oldpackagedirs(GSList *oldpackagedirs,
00081 gint64 max_delta_rpm_size,
00082 GError **err);
00083
00084 cr_DeltaTargetPackage *
00085 cr_deltatargetpackage_from_package(cr_Package *pkg,
00086 const char *path,
00087 GError **err);
00088
00089 cr_DeltaTargetPackage *
00090 cr_deltatargetpackage_from_rpm(const char *path, GError **err);
00091
00092 void
00093 cr_deltatargetpackage_free(cr_DeltaTargetPackage *tpkg);
00094
00095 gboolean
00096 cr_deltarpms_parallel_deltas(GSList *targetpackages,
00097 GHashTable *oldpackages,
00098 const char *outdeltadir,
00099 gint num_deltas,
00100 gint workers,
00101 gint64 max_delta_rpm_size,
00102 gint64 max_work_size,
00103 GError **err);
00104
00105 GSList *
00106 cr_deltarpms_scan_targetdir(const char *path,
00107 gint64 max_delta_rpm_size,
00108 GError **err);
00109
00110 gboolean
00111 cr_deltarpms_generate_prestodelta_file(const gchar *drpmdir,
00112 cr_XmlFile *f,
00113 cr_ChecksumType checksum_type,
00114 gint workers,
00115 const gchar *prefix_to_strip,
00116 GError **err);
00117 #endif
00118
00119
00122 #ifdef __cplusplus
00123 }
00124 #endif
00125
00126 #endif