Signed-off-by: Allan McRae <[email protected]>
---
 lib/libalpm/Makefile.am    |   1 -
 lib/libalpm/alpm.h         |  53 ------
 lib/libalpm/be_sync.c      |  21 +--
 lib/libalpm/delta.c        | 361 -------------------------------------
 lib/libalpm/delta.h        |  33 ----
 lib/libalpm/error.c        |   5 -
 lib/libalpm/handle.c       |  20 --
 lib/libalpm/handle.h       |   5 -
 lib/libalpm/meson.build    |   1 -
 lib/libalpm/package.c      |  14 --
 lib/libalpm/package.h      |   2 -
 lib/libalpm/po/POTFILES.in |   1 -
 lib/libalpm/sync.c         | 207 +--------------------
 src/pacman/callback.c      |   8 -
 14 files changed, 10 insertions(+), 722 deletions(-)
 delete mode 100644 lib/libalpm/delta.c
 delete mode 100644 lib/libalpm/delta.h

diff --git a/lib/libalpm/Makefile.am b/lib/libalpm/Makefile.am
index 8201dcbd..1e01feeb 100644
--- a/lib/libalpm/Makefile.am
+++ b/lib/libalpm/Makefile.am
@@ -34,7 +34,6 @@ libalpm_la_SOURCES = \
        be_sync.c \
        conflict.h conflict.c \
        db.h db.c \
-       delta.h delta.c \
        deps.h deps.c \
        diskspace.h diskspace.c \
        dload.h dload.c \
diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h
index 337b30d2..ffb2ad96 100644
--- a/lib/libalpm/alpm.h
+++ b/lib/libalpm/alpm.h
@@ -104,9 +104,6 @@ typedef enum _alpm_errno_t {
        /* Signatures */
        ALPM_ERR_SIG_MISSING,
        ALPM_ERR_SIG_INVALID,
-       /* Deltas */
-       ALPM_ERR_DLT_INVALID,
-       ALPM_ERR_DLT_PATCHFAILED,
        /* Dependencies */
        ALPM_ERR_UNSATISFIED_DEPS,
        ALPM_ERR_CONFLICTING_DEPS,
@@ -273,22 +270,6 @@ typedef struct _alpm_group_t {
        alpm_list_t *packages;
 } alpm_group_t;
 
-/** Package upgrade delta */
-typedef struct _alpm_delta_t {
-       /** filename of the delta patch */
-       char *delta;
-       /** md5sum of the delta file */
-       char *delta_md5;
-       /** filename of the 'before' file */
-       char *from;
-       /** filename of the 'after' file */
-       char *to;
-       /** filesize of the delta file */
-       off_t delta_size;
-       /** download filesize of the delta file */
-       off_t download_size;
-} alpm_delta_t;
-
 /** File in a package */
 typedef struct _alpm_file_t {
        char *name;
@@ -405,21 +386,6 @@ typedef enum _alpm_event_type_t {
        ALPM_EVENT_LOAD_START,
        /** Target package is finished loading. */
        ALPM_EVENT_LOAD_DONE,
-       /** Target delta's integrity will be checked. */
-       ALPM_EVENT_DELTA_INTEGRITY_START,
-       /** Target delta's integrity was checked. */
-       ALPM_EVENT_DELTA_INTEGRITY_DONE,
-       /** Deltas will be applied to packages. */
-       ALPM_EVENT_DELTA_PATCHES_START,
-       /** Deltas were applied to packages. */
-       ALPM_EVENT_DELTA_PATCHES_DONE,
-       /** Delta patch will be applied to target package; See
-        * alpm_event_delta_patch_t for arguments.. */
-       ALPM_EVENT_DELTA_PATCH_START,
-       /** Delta patch was applied to target package. */
-       ALPM_EVENT_DELTA_PATCH_DONE,
-       /** Delta patch failed to apply to target package. */
-       ALPM_EVENT_DELTA_PATCH_FAILED,
        /** Scriptlet has printed information; See alpm_event_scriptlet_info_t 
for
         * arguments. */
        ALPM_EVENT_SCRIPTLET_INFO,
@@ -509,13 +475,6 @@ typedef struct _alpm_event_optdep_removal_t {
        alpm_depend_t *optdep;
 } alpm_event_optdep_removal_t;
 
-typedef struct _alpm_event_delta_patch_t {
-       /** Type of event. */
-       alpm_event_type_t type;
-       /** Delta info */
-       alpm_delta_t *delta;
-} alpm_event_delta_patch_t;
-
 typedef struct _alpm_event_scriptlet_info_t {
        /** Type of event. */
        alpm_event_type_t type;
@@ -589,7 +548,6 @@ typedef union _alpm_event_t {
        alpm_event_any_t any;
        alpm_event_package_operation_t package_operation;
        alpm_event_optdep_removal_t optdep_removal;
-       alpm_event_delta_patch_t delta_patch;
        alpm_event_scriptlet_info_t scriptlet_info;
        alpm_event_database_missing_t database_missing;
        alpm_event_pkgdownload_t pkgdownload;
@@ -915,9 +873,6 @@ const char *alpm_option_get_arch(alpm_handle_t *handle);
 /** Sets the targeted architecture. */
 int alpm_option_set_arch(alpm_handle_t *handle, const char *arch);
 
-double alpm_option_get_deltaratio(alpm_handle_t *handle);
-int alpm_option_set_deltaratio(alpm_handle_t *handle, double ratio);
-
 int alpm_option_get_checkspace(alpm_handle_t *handle);
 int alpm_option_set_checkspace(alpm_handle_t *handle, int checkspace);
 
@@ -1294,12 +1249,6 @@ alpm_list_t *alpm_pkg_get_conflicts(alpm_pkg_t *pkg);
  */
 alpm_list_t *alpm_pkg_get_provides(alpm_pkg_t *pkg);
 
-/** Returns the list of available deltas for pkg.
- * @param pkg a pointer to package
- * @return a reference to an internal list of strings.
- */
-alpm_list_t *alpm_pkg_get_deltas(alpm_pkg_t *pkg);
-
 /** Returns the list of packages to be replaced by pkg.
  * @param pkg a pointer to package
  * @return a reference to an internal list of alpm_depend_t structures.
@@ -1397,8 +1346,6 @@ int alpm_pkg_has_scriptlet(alpm_pkg_t *pkg);
  */
 off_t alpm_pkg_download_size(alpm_pkg_t *newpkg);
 
-alpm_list_t *alpm_pkg_unused_deltas(alpm_pkg_t *pkg);
-
 /** Set install reason for a package in the local database.
  * The provided package object must be from the local database or this method
  * will fail. The write to the local database is performed immediately.
diff --git a/lib/libalpm/be_sync.c b/lib/libalpm/be_sync.c
index deaec27c..9db271b9 100644
--- a/lib/libalpm/be_sync.c
+++ b/lib/libalpm/be_sync.c
@@ -37,7 +37,6 @@
 #include "alpm_list.h"
 #include "package.h"
 #include "handle.h"
-#include "delta.h"
 #include "deps.h"
 #include "dload.h"
 #include "filelist.h"
@@ -427,9 +426,8 @@ static alpm_pkg_t *load_pkg_for_entry(alpm_db_t *db, const 
char *entryname,
 
 /* This function doesn't work as well as one might think, as size of database
  * entries varies considerably. Adding signatures nearly doubles the size of a
- * single entry; deltas also can make for large variations in size. These
- * current values are heavily influenced by Arch Linux; databases with no
- * deltas and a single signature per package. */
+ * single entry. These  current values are heavily influenced by Arch Linux;
+ * databases with a single signature per package. */
 static size_t estimate_package_count(struct stat *st, struct archive *archive)
 {
        int per_package;
@@ -511,7 +509,7 @@ static int sync_db_populate(alpm_db_t *db)
        while((archive_ret = archive_read_next_header(archive, &entry)) == 
ARCHIVE_OK) {
                mode_t mode = archive_entry_mode(entry);
                if(!S_ISDIR(mode)) {
-                       /* we have desc, depends or deltas - parse it */
+                       /* we have desc or depends - parse it */
                        if(sync_db_read(db, archive, entry, &pkg) != 0) {
                                _alpm_log(db->handle, ALPM_LOG_ERROR,
                                                _("could not parse package 
description file '%s' from db '%s'\n"),
@@ -637,8 +635,7 @@ static int sync_db_read(alpm_db_t *db, struct archive 
*archive,
        }
 
        if(strcmp(filename, "desc") == 0 || strcmp(filename, "depends") == 0
-                       || strcmp(filename, "files") == 0
-                       || (strcmp(filename, "deltas") == 0 && 
db->handle->deltaratio > 0.0) ) {
+                       || strcmp(filename, "files") == 0) {
                int ret;
                while((ret = _alpm_archive_fgets(archive, &buf)) == ARCHIVE_OK) 
{
                        char *line = buf.line;
@@ -707,14 +704,6 @@ static int sync_db_read(alpm_db_t *db, struct archive 
*archive,
                                READ_AND_SPLITDEP(pkg->conflicts);
                        } else if(strcmp(line, "%PROVIDES%") == 0) {
                                READ_AND_SPLITDEP(pkg->provides);
-                       } else if(strcmp(line, "%DELTAS%") == 0) {
-                               /* Different than the rest because of the 
_alpm_delta_parse call. */
-                               while(1) {
-                                       READ_NEXT();
-                                       if(strlen(line) == 0) break;
-                                       pkg->deltas = alpm_list_add(pkg->deltas,
-                                                       
_alpm_delta_parse(db->handle, line));
-                               }
                        } else if(strcmp(line, "%FILES%") == 0) {
                                /* TODO: this could lazy load if there is 
future demand */
                                size_t files_count = 0, files_size = 0;
@@ -751,8 +740,6 @@ static int sync_db_read(alpm_db_t *db, struct archive 
*archive,
                        goto error;
                }
                *likely_pkg = pkg;
-       } else if(strcmp(filename, "deltas") == 0) {
-               /* skip reading delta files if UseDelta is unset */
        } else {
                /* unknown database file */
                _alpm_log(db->handle, ALPM_LOG_DEBUG, "unknown database file: 
%s\n", filename);
diff --git a/lib/libalpm/delta.c b/lib/libalpm/delta.c
deleted file mode 100644
index 33da4a3f..00000000
--- a/lib/libalpm/delta.c
+++ /dev/null
@@ -1,361 +0,0 @@
-/*
- *  delta.c
- *
- *  Copyright (c) 2006-2018 Pacman Development Team <[email protected]>
- *  Copyright (c) 2007-2006 by Judd Vinet <[email protected]>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <stdlib.h>
-#include <string.h>
-#include <stdint.h> /* intmax_t */
-#include <limits.h>
-#include <sys/types.h>
-#include <regex.h>
-
-/* libalpm */
-#include "delta.h"
-#include "alpm_list.h"
-#include "util.h"
-#include "log.h"
-#include "graph.h"
-
-static alpm_list_t *graph_init(alpm_list_t *deltas, int reverse)
-{
-       alpm_list_t *i, *j;
-       alpm_list_t *vertices = NULL;
-       /* create the vertices */
-       for(i = deltas; i; i = i->next) {
-               alpm_graph_t *v = _alpm_graph_new();
-               if(!v) {
-                       alpm_list_free(vertices);
-                       return NULL;
-               }
-               alpm_delta_t *vdelta = i->data;
-               vdelta->download_size = vdelta->delta_size;
-               v->weight = LONG_MAX;
-               v->data = vdelta;
-               vertices = alpm_list_add(vertices, v);
-       }
-
-       /* compute the edges */
-       for(i = vertices; i; i = i->next) {
-               alpm_graph_t *v_i = i->data;
-               alpm_delta_t *d_i = v_i->data;
-               /* loop a second time so we make all possible comparisons */
-               for(j = vertices; j; j = j->next) {
-                       alpm_graph_t *v_j = j->data;
-                       alpm_delta_t *d_j = v_j->data;
-                       /* We want to create a delta tree like the following:
-                        *          1_to_2
-                        *            |
-                        * 1_to_3   2_to_3
-                        *   \        /
-                        *     3_to_4
-                        * If J 'from' is equal to I 'to', then J is a child of 
I.
-                        * */
-                       if((!reverse && strcmp(d_j->from, d_i->to) == 0) ||
-                                       (reverse && strcmp(d_j->to, d_i->from) 
== 0)) {
-                               v_i->children = alpm_list_add(v_i->children, 
v_j);
-                       }
-               }
-               v_i->iterator = v_i->children;
-       }
-       return vertices;
-}
-
-static void graph_init_size(alpm_handle_t *handle, alpm_list_t *vertices)
-{
-       alpm_list_t *i;
-
-       for(i = vertices; i; i = i->next) {
-               char *fpath, *md5sum;
-               alpm_graph_t *v = i->data;
-               alpm_delta_t *vdelta = v->data;
-
-               /* determine whether the delta file already exists */
-               fpath = _alpm_filecache_find(handle, vdelta->delta);
-               if(fpath) {
-                       md5sum = alpm_compute_md5sum(fpath);
-                       if(md5sum && strcmp(md5sum, vdelta->delta_md5) == 0) {
-                               vdelta->download_size = 0;
-                       }
-                       FREE(md5sum);
-                       FREE(fpath);
-               } else {
-                       char *fnamepart;
-                       CALLOC(fnamepart, strlen(vdelta->delta) + 6, 
sizeof(char), return);
-                       sprintf(fnamepart, "%s.part", vdelta->delta);
-                       fpath = _alpm_filecache_find(handle, fnamepart);
-                       if(fpath) {
-                               struct stat st;
-                               if(stat(fpath, &st) == 0) {
-                                       vdelta->download_size = 
vdelta->delta_size - st.st_size;
-                                       vdelta->download_size = 
vdelta->download_size < 0 ? 0 : vdelta->download_size;
-                               }
-                               FREE(fpath);
-                       }
-                       FREE(fnamepart);
-               }
-
-               /* determine whether a base 'from' file exists */
-               fpath = _alpm_filecache_find(handle, vdelta->from);
-               if(fpath) {
-                       v->weight = vdelta->download_size;
-               }
-               FREE(fpath);
-       }
-}
-
-
-static void dijkstra(alpm_list_t *vertices)
-{
-       alpm_list_t *i;
-       alpm_graph_t *v;
-       while(1) {
-               v = NULL;
-               /* find the smallest vertice not visited yet */
-               for(i = vertices; i; i = i->next) {
-                       alpm_graph_t *v_i = i->data;
-
-                       if(v_i->state == ALPM_GRAPH_STATE_PROCESSING) {
-                               continue;
-                       }
-
-                       if(v == NULL || v_i->weight < v->weight) {
-                               v = v_i;
-                       }
-               }
-               if(v == NULL || v->weight == LONG_MAX) {
-                       break;
-               }
-
-               v->state = ALPM_GRAPH_STATE_PROCESSING;
-
-               v->iterator = v->children;
-               while(v->iterator) {
-                       alpm_graph_t *v_c = v->iterator->data;
-                       alpm_delta_t *d_c = v_c->data;
-                       if(v_c->weight > v->weight + d_c->download_size) {
-                               v_c->weight = v->weight + d_c->download_size;
-                               v_c->parent = v;
-                       }
-
-                       v->iterator = (v->iterator)->next;
-
-               }
-       }
-}
-
-static off_t shortest_path(alpm_list_t *vertices, const char *to, alpm_list_t 
**path)
-{
-       alpm_list_t *i;
-       alpm_graph_t *v = NULL;
-       off_t bestsize = 0;
-       alpm_list_t *rpath = NULL;
-
-       for(i = vertices; i; i = i->next) {
-               alpm_graph_t *v_i = i->data;
-               alpm_delta_t *d_i = v_i->data;
-
-               if(strcmp(d_i->to, to) == 0) {
-                       if(v == NULL || v_i->weight < v->weight) {
-                               v = v_i;
-                               bestsize = v->weight;
-                       }
-               }
-       }
-
-       while(v != NULL) {
-               alpm_delta_t *vdelta = v->data;
-               rpath = alpm_list_add(rpath, vdelta);
-               v = v->parent;
-       }
-       *path = alpm_list_reverse(rpath);
-       alpm_list_free(rpath);
-
-       return bestsize;
-}
-
-/** Calculates the shortest path from one version to another.
- * The shortest path is defined as the path with the smallest combined
- * size, not the length of the path.
- * @param handle the context handle
- * @param deltas the list of alpm_delta_t * objects that a file has
- * @param to the file to start the search at
- * @param path the pointer to a list location where alpm_delta_t * objects that
- * have the smallest size are placed. NULL is set if there is no path
- * possible with the files available.
- * @return the size of the path stored, or LONG_MAX if path is unfindable
- */
-off_t _alpm_shortest_delta_path(alpm_handle_t *handle, alpm_list_t *deltas,
-               const char *to, alpm_list_t **path)
-{
-       alpm_list_t *bestpath = NULL;
-       alpm_list_t *vertices;
-       off_t bestsize = LONG_MAX;
-
-       if(deltas == NULL) {
-               *path = NULL;
-               return bestsize;
-       }
-
-       _alpm_log(handle, ALPM_LOG_DEBUG, "started delta shortest-path search 
for '%s'\n", to);
-
-       vertices = graph_init(deltas, 0);
-       graph_init_size(handle, vertices);
-       dijkstra(vertices);
-       bestsize = shortest_path(vertices, to, &bestpath);
-
-       _alpm_log(handle, ALPM_LOG_DEBUG, "delta shortest-path search complete 
: '%jd'\n", (intmax_t)bestsize);
-
-       alpm_list_free_inner(vertices, _alpm_graph_free);
-       alpm_list_free(vertices);
-
-       *path = bestpath;
-       return bestsize;
-}
-
-static alpm_list_t *find_unused(alpm_list_t *deltas, const char *to, off_t 
quota)
-{
-       alpm_list_t *unused = NULL;
-       alpm_list_t *vertices;
-       alpm_list_t *i;
-       vertices = graph_init(deltas, 1);
-
-       for(i = vertices; i; i = i->next) {
-               alpm_graph_t *v = i->data;
-               alpm_delta_t *vdelta = v->data;
-               if(strcmp(vdelta->to, to) == 0) {
-                       v->weight = vdelta->download_size;
-               }
-       }
-       dijkstra(vertices);
-       for(i = vertices; i; i = i->next) {
-               alpm_graph_t *v = i->data;
-               alpm_delta_t *vdelta = v->data;
-               if(v->weight > quota) {
-                       unused = alpm_list_add(unused, vdelta->delta);
-               }
-       }
-       alpm_list_free_inner(vertices, _alpm_graph_free);
-       alpm_list_free(vertices);
-       return unused;
-}
-
-/** \addtogroup alpm_deltas Delta Functions
- * @brief Functions to manipulate libalpm deltas
- * @{
- */
-
-alpm_list_t SYMEXPORT *alpm_pkg_unused_deltas(alpm_pkg_t *pkg)
-{
-       ASSERT(pkg != NULL, return NULL);
-       return find_unused(pkg->deltas, pkg->filename,
-                       pkg->size * pkg->handle->deltaratio);
-}
-
-/** @} */
-
-#define NUM_MATCHES 6
-
-/** Parses the string representation of a alpm_delta_t object.
- * This function assumes that the string is in the correct format.
- * This format is as follows:
- * $deltafile $deltamd5 $deltasize $oldfile $newfile
- * @param handle the context handle
- * @param line the string to parse
- * @return A pointer to the new alpm_delta_t object
- */
-alpm_delta_t *_alpm_delta_parse(alpm_handle_t *handle, const char *line)
-{
-       alpm_delta_t *delta;
-       size_t len;
-       regmatch_t pmatch[NUM_MATCHES];
-       char filesize[32];
-
-       /* this is so we only have to compile the pattern once */
-       if(!handle->delta_regex_compiled) {
-               /* $deltafile $deltamd5 $deltasize $oldfile $newfile*/
-               regcomp(&handle->delta_regex,
-                               "^([^[:space:]]+) ([[:xdigit:]]{32}) 
([[:digit:]]+)"
-                               " ([^[:space:]]+) ([^[:space:]]+)$",
-                               REG_EXTENDED | REG_NEWLINE);
-               handle->delta_regex_compiled = 1;
-       }
-
-       if(regexec(&handle->delta_regex, line, NUM_MATCHES, pmatch, 0) != 0) {
-               /* delta line is invalid, return NULL */
-               return NULL;
-       }
-
-       CALLOC(delta, 1, sizeof(alpm_delta_t), return NULL);
-
-       /* start at index 1 -- match 0 is the entire match */
-       len = pmatch[1].rm_eo - pmatch[1].rm_so;
-       STRNDUP(delta->delta, &line[pmatch[1].rm_so], len, goto error);
-
-       len = pmatch[2].rm_eo - pmatch[2].rm_so;
-       STRNDUP(delta->delta_md5, &line[pmatch[2].rm_so], len, goto error);
-
-       len = pmatch[3].rm_eo - pmatch[3].rm_so;
-       if(len < sizeof(filesize)) {
-               strncpy(filesize, &line[pmatch[3].rm_so], len);
-               filesize[len] = '\0';
-               delta->delta_size = _alpm_strtoofft(filesize);
-       }
-
-       len = pmatch[4].rm_eo - pmatch[4].rm_so;
-       STRNDUP(delta->from, &line[pmatch[4].rm_so], len, goto error);
-
-       len = pmatch[5].rm_eo - pmatch[5].rm_so;
-       STRNDUP(delta->to, &line[pmatch[5].rm_so], len, goto error);
-
-       return delta;
-
-error:
-       _alpm_delta_free(delta);
-       return NULL;
-}
-
-#undef NUM_MATCHES
-
-void _alpm_delta_free(alpm_delta_t *delta)
-{
-       ASSERT(delta != NULL, return);
-       FREE(delta->delta);
-       FREE(delta->delta_md5);
-       FREE(delta->from);
-       FREE(delta->to);
-       FREE(delta);
-}
-
-alpm_delta_t *_alpm_delta_dup(const alpm_delta_t *delta)
-{
-       alpm_delta_t *newdelta;
-       CALLOC(newdelta, 1, sizeof(alpm_delta_t), return NULL);
-       STRDUP(newdelta->delta, delta->delta, goto error);
-       STRDUP(newdelta->delta_md5, delta->delta_md5, goto error);
-       STRDUP(newdelta->from, delta->from, goto error);
-       STRDUP(newdelta->to, delta->to, goto error);
-       newdelta->delta_size = delta->delta_size;
-       newdelta->download_size = delta->download_size;
-
-       return newdelta;
-
-error:
-       _alpm_delta_free(newdelta);
-       return NULL;
-}
diff --git a/lib/libalpm/delta.h b/lib/libalpm/delta.h
deleted file mode 100644
index d80c0745..00000000
--- a/lib/libalpm/delta.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- *  delta.h
- *
- *  Copyright (c) 2006-2018 Pacman Development Team <[email protected]>
- *  Copyright (c) 2007-2006 by Judd Vinet <[email protected]>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef ALPM_DELTA_H
-#define ALPM_DELTA_H
-
-#include <sys/types.h> /* off_t */
-
-#include "alpm.h"
-
-alpm_delta_t *_alpm_delta_parse(alpm_handle_t *handle, const char *line);
-void _alpm_delta_free(alpm_delta_t *delta);
-alpm_delta_t *_alpm_delta_dup(const alpm_delta_t *delta);
-off_t _alpm_shortest_delta_path(alpm_handle_t *handle, alpm_list_t *deltas,
-               const char *to, alpm_list_t **path);
-
-#endif /* ALPM_DELTA_H */
diff --git a/lib/libalpm/error.c b/lib/libalpm/error.c
index 95be9d7b..a5c6f4fe 100644
--- a/lib/libalpm/error.c
+++ b/lib/libalpm/error.c
@@ -130,11 +130,6 @@ const char SYMEXPORT *alpm_strerror(alpm_errno_t err)
                        return _("missing PGP signature");
                case ALPM_ERR_SIG_INVALID:
                        return _("invalid PGP signature");
-               /* Deltas */
-               case ALPM_ERR_DLT_INVALID:
-                       return _("invalid or corrupted delta");
-               case ALPM_ERR_DLT_PATCHFAILED:
-                       return _("delta patch failed");
                /* Dependencies */
                case ALPM_ERR_UNSATISFIED_DEPS:
                        return _("could not satisfy dependencies");
diff --git a/lib/libalpm/handle.c b/lib/libalpm/handle.c
index c491d87c..476779c4 100644
--- a/lib/libalpm/handle.c
+++ b/lib/libalpm/handle.c
@@ -34,7 +34,6 @@
 #include "alpm_list.h"
 #include "util.h"
 #include "log.h"
-#include "delta.h"
 #include "trans.h"
 #include "alpm.h"
 #include "deps.h"
@@ -44,7 +43,6 @@ alpm_handle_t *_alpm_handle_new(void)
        alpm_handle_t *handle;
 
        CALLOC(handle, 1, sizeof(alpm_handle_t), return NULL);
-       handle->deltaratio = 0.0;
        handle->lockfd = -1;
 
        return handle;
@@ -75,8 +73,6 @@ void _alpm_handle_free(alpm_handle_t *handle)
        FREELIST(handle->known_keys);
 #endif
 
-       regfree(&handle->delta_regex);
-
        /* free memory */
        _alpm_trans_free(handle->trans);
        FREE(handle->root);
@@ -303,12 +299,6 @@ const char SYMEXPORT *alpm_option_get_arch(alpm_handle_t 
*handle)
        return handle->arch;
 }
 
-double SYMEXPORT alpm_option_get_deltaratio(alpm_handle_t *handle)
-{
-       CHECK_HANDLE(handle, return -1);
-       return handle->deltaratio;
-}
-
 int SYMEXPORT alpm_option_get_checkspace(alpm_handle_t *handle)
 {
        CHECK_HANDLE(handle, return -1);
@@ -755,16 +745,6 @@ int SYMEXPORT alpm_option_set_arch(alpm_handle_t *handle, 
const char *arch)
        return 0;
 }
 
-int SYMEXPORT alpm_option_set_deltaratio(alpm_handle_t *handle, double ratio)
-{
-       CHECK_HANDLE(handle, return -1);
-       if(ratio < 0.0 || ratio > 2.0) {
-               RET_ERR(handle, ALPM_ERR_WRONG_ARGS, -1);
-       }
-       handle->deltaratio = ratio;
-       return 0;
-}
-
 alpm_db_t SYMEXPORT *alpm_get_localdb(alpm_handle_t *handle)
 {
        CHECK_HANDLE(handle, return NULL);
diff --git a/lib/libalpm/handle.h b/lib/libalpm/handle.h
index 44c4904b..14d20bbe 100644
--- a/lib/libalpm/handle.h
+++ b/lib/libalpm/handle.h
@@ -95,7 +95,6 @@ struct __alpm_handle_t {
 
        /* options */
        char *arch;              /* Architecture of packages we should allow */
-       double deltaratio;       /* Download deltas if possible; a ratio value 
*/
        int usesyslog;           /* Use syslog instead of logfile? */ /* TODO 
move to frontend */
        int checkspace;          /* Check disk space before installing */
        char *dbext;             /* Sync DB extension */
@@ -110,10 +109,6 @@ struct __alpm_handle_t {
 
        /* lock file descriptor */
        int lockfd;
-
-       /* for delta parsing efficiency */
-       int delta_regex_compiled;
-       regex_t delta_regex;
 };
 
 alpm_handle_t *_alpm_handle_new(void);
diff --git a/lib/libalpm/meson.build b/lib/libalpm/meson.build
index 84c3dde3..607e91a3 100644
--- a/lib/libalpm/meson.build
+++ b/lib/libalpm/meson.build
@@ -9,7 +9,6 @@ libalpm_sources = files('''
   be_sync.c
   conflict.h conflict.c
   db.h db.c
-  delta.h delta.c
   deps.h deps.c
   diskspace.h diskspace.c
   dload.h dload.c
diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c
index 97a78781..94716666 100644
--- a/lib/libalpm/package.c
+++ b/lib/libalpm/package.c
@@ -31,7 +31,6 @@
 #include "log.h"
 #include "util.h"
 #include "db.h"
-#include "delta.h"
 #include "handle.h"
 #include "deps.h"
 
@@ -374,13 +373,6 @@ alpm_list_t SYMEXPORT *alpm_pkg_get_replaces(alpm_pkg_t 
*pkg)
        return pkg->ops->get_replaces(pkg);
 }
 
-alpm_list_t SYMEXPORT *alpm_pkg_get_deltas(alpm_pkg_t *pkg)
-{
-       ASSERT(pkg != NULL, return NULL);
-       pkg->handle->pm_errno = ALPM_ERR_OK;
-       return pkg->deltas;
-}
-
 alpm_filelist_t SYMEXPORT *alpm_pkg_get_files(alpm_pkg_t *pkg)
 {
        ASSERT(pkg != NULL, return NULL);
@@ -620,9 +612,6 @@ int _alpm_pkg_dup(alpm_pkg_t *pkg, alpm_pkg_t **new_ptr)
        newpkg->optdepends = list_depdup(pkg->optdepends);
        newpkg->conflicts  = list_depdup(pkg->conflicts);
        newpkg->provides   = list_depdup(pkg->provides);
-       for(i = pkg->deltas; i; i = i->next) {
-               newpkg->deltas = alpm_list_add(newpkg->deltas, 
_alpm_delta_dup(i->data));
-       }
 
        if(pkg->files.count) {
                size_t filenum;
@@ -696,9 +685,6 @@ void _alpm_pkg_free(alpm_pkg_t *pkg)
        free_deplist(pkg->optdepends);
        free_deplist(pkg->conflicts);
        free_deplist(pkg->provides);
-       alpm_list_free_inner(pkg->deltas, (alpm_list_fn_free)_alpm_delta_free);
-       alpm_list_free(pkg->deltas);
-       alpm_list_free(pkg->delta_path);
        alpm_list_free(pkg->removes);
        _alpm_pkg_free(pkg->oldpkg);
 
diff --git a/lib/libalpm/package.h b/lib/libalpm/package.h
index fbcde266..bc66a569 100644
--- a/lib/libalpm/package.h
+++ b/lib/libalpm/package.h
@@ -118,8 +118,6 @@ struct __alpm_pkg_t {
        alpm_list_t *makedepends;
        alpm_list_t *conflicts;
        alpm_list_t *provides;
-       alpm_list_t *deltas;
-       alpm_list_t *delta_path;
        alpm_list_t *removes; /* in transaction targets only */
        alpm_pkg_t *oldpkg; /* in transaction targets only */
 
diff --git a/lib/libalpm/po/POTFILES.in b/lib/libalpm/po/POTFILES.in
index b6108629..0fa444ed 100644
--- a/lib/libalpm/po/POTFILES.in
+++ b/lib/libalpm/po/POTFILES.in
@@ -12,7 +12,6 @@ lib/libalpm/be_package.c
 lib/libalpm/be_sync.c
 lib/libalpm/conflict.c
 lib/libalpm/db.c
-lib/libalpm/delta.c
 lib/libalpm/deps.c
 lib/libalpm/diskspace.c
 lib/libalpm/dload.c
diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c
index de579eac..cbd072e6 100644
--- a/lib/libalpm/sync.c
+++ b/lib/libalpm/sync.c
@@ -43,7 +43,6 @@
 #include "handle.h"
 #include "alpm.h"
 #include "dload.h"
-#include "delta.h"
 #include "remove.h"
 #include "diskspace.h"
 #include "signing.h"
@@ -351,21 +350,6 @@ static int compute_download_size(alpm_pkg_t *newpkg)
 
                /* tell the caller that we have a partial */
                ret = 1;
-       } else if(handle->deltaratio > 0.0) {
-               off_t dltsize;
-
-               dltsize = _alpm_shortest_delta_path(handle, newpkg->deltas,
-                               newpkg->filename, &newpkg->delta_path);
-
-               if(newpkg->delta_path && (dltsize < newpkg->size * 
handle->deltaratio)) {
-                       _alpm_log(handle, ALPM_LOG_DEBUG, "using delta size\n");
-                       size = dltsize;
-               } else {
-                       _alpm_log(handle, ALPM_LOG_DEBUG, "using package 
size\n");
-                       size = newpkg->size;
-                       alpm_list_free(newpkg->delta_path);
-                       newpkg->delta_path = NULL;
-               }
        } else {
                size = newpkg->size;
        }
@@ -696,118 +680,6 @@ off_t SYMEXPORT alpm_pkg_download_size(alpm_pkg_t *newpkg)
        return newpkg->download_size;
 }
 
-static int endswith(const char *filename, const char *extension)
-{
-       const char *s = filename + strlen(filename) - strlen(extension);
-       return strcmp(s, extension) == 0;
-}
-
-/** Applies delta files to create an upgraded package file.
- *
- * All intermediate files are deleted, leaving only the starting and
- * ending package files.
- *
- * @param handle the context handle
- *
- * @return 0 if all delta files were able to be applied, 1 otherwise.
- */
-static int apply_deltas(alpm_handle_t *handle)
-{
-       alpm_list_t *i;
-       size_t deltas_found = 0;
-       int ret = 0;
-       const char *cachedir = _alpm_filecache_setup(handle);
-       alpm_trans_t *trans = handle->trans;
-       alpm_event_delta_patch_t event;
-
-       for(i = trans->add; i; i = i->next) {
-               alpm_pkg_t *spkg = i->data;
-               alpm_list_t *delta_path = spkg->delta_path;
-               alpm_list_t *dlts = NULL;
-
-               if(!delta_path) {
-                       continue;
-               }
-
-               if(!deltas_found) {
-                       /* only show this if we actually have deltas to apply, 
and it is before
-                        * the very first one */
-                       event.type = ALPM_EVENT_DELTA_PATCHES_START;
-                       EVENT(handle, &event);
-                       deltas_found = 1;
-               }
-
-               for(dlts = delta_path; dlts; dlts = dlts->next) {
-                       alpm_delta_t *d = dlts->data;
-                       char *delta, *from, *to;
-                       char command[PATH_MAX];
-                       size_t len = 0;
-
-                       delta = _alpm_filecache_find(handle, d->delta);
-                       /* the initial package might be in a different cachedir 
*/
-                       if(dlts == delta_path) {
-                               from = _alpm_filecache_find(handle, d->from);
-                       } else {
-                               /* len = cachedir len + from len + '/' + null */
-                               len = strlen(cachedir) + strlen(d->from) + 2;
-                               MALLOC(from, len, free(delta); RET_ERR(handle, 
ALPM_ERR_MEMORY, 1));
-                               snprintf(from, len, "%s/%s", cachedir, d->from);
-                       }
-                       len = strlen(cachedir) + strlen(d->to) + 2;
-                       MALLOC(to, len, free(delta); free(from); 
RET_ERR(handle, ALPM_ERR_MEMORY, 1));
-                       snprintf(to, len, "%s/%s", cachedir, d->to);
-
-                       /* build the patch command */
-                       if(endswith(to, ".gz")) {
-                               /* special handling for gzip : we disable 
timestamp with -n option */
-                               snprintf(command, PATH_MAX, "xdelta3 -d -q -R 
-c -s %s %s | gzip -n > %s", from, delta, to);
-                       } else {
-                               snprintf(command, PATH_MAX, "xdelta3 -d -q -s 
%s %s %s", from, delta, to);
-                       }
-
-                       _alpm_log(handle, ALPM_LOG_DEBUG, "command: %s\n", 
command);
-
-                       event.type = ALPM_EVENT_DELTA_PATCH_START;
-                       event.delta = d;
-                       EVENT(handle, &event);
-
-                       int retval = system(command);
-                       if(retval == 0) {
-                               event.type = ALPM_EVENT_DELTA_PATCH_DONE;
-                               EVENT(handle, &event);
-
-                               /* delete the delta file */
-                               unlink(delta);
-
-                               /* Delete the 'from' package but only if it is 
an intermediate
-                                * package. The starting 'from' package should 
be kept, just
-                                * as if deltas were not used. */
-                               if(dlts != delta_path) {
-                                       unlink(from);
-                               }
-                       }
-                       FREE(from);
-                       FREE(to);
-                       FREE(delta);
-
-                       if(retval != 0) {
-                               /* one delta failed for this package, cancel 
the remaining ones */
-                               event.type = ALPM_EVENT_DELTA_PATCH_FAILED;
-                               EVENT(handle, &event);
-                               handle->pm_errno = ALPM_ERR_DLT_PATCHFAILED;
-                               ret = 1;
-                               break;
-                       }
-               }
-       }
-       if(deltas_found) {
-               event.type = ALPM_EVENT_DELTA_PATCHES_DONE;
-               EVENT(handle, &event);
-       }
-
-       return ret;
-}
-
 /**
  * Prompts to delete the file now that we know it is invalid.
  * @param handle the context handle
@@ -832,44 +704,6 @@ static int prompt_to_delete(alpm_handle_t *handle, const 
char *filepath,
        return question.remove;
 }
 
-static int validate_deltas(alpm_handle_t *handle, alpm_list_t *deltas)
-{
-       alpm_list_t *i, *errors = NULL;
-       alpm_event_t event;
-
-       if(!deltas) {
-               return 0;
-       }
-
-       /* Check integrity of deltas */
-       event.type = ALPM_EVENT_DELTA_INTEGRITY_START;
-       EVENT(handle, &event);
-       for(i = deltas; i; i = i->next) {
-               alpm_delta_t *d = i->data;
-               char *filepath = _alpm_filecache_find(handle, d->delta);
-
-               if(_alpm_test_checksum(filepath, d->delta_md5, 
ALPM_PKG_VALIDATION_MD5SUM)) {
-                       errors = alpm_list_add(errors, filepath);
-               } else {
-                       FREE(filepath);
-               }
-       }
-       event.type = ALPM_EVENT_DELTA_INTEGRITY_DONE;
-       EVENT(handle, &event);
-
-       if(errors) {
-               for(i = errors; i; i = i->next) {
-                       char *filepath = i->data;
-                       prompt_to_delete(handle, filepath, 
ALPM_ERR_DLT_INVALID);
-                       FREE(filepath);
-               }
-               alpm_list_free(errors);
-               handle->pm_errno = ALPM_ERR_DLT_INVALID;
-               return -1;
-       }
-       return 0;
-}
-
 static struct dload_payload *build_payload(alpm_handle_t *handle,
                const char *filename, size_t size, alpm_list_t *servers)
 {
@@ -882,7 +716,7 @@ static struct dload_payload *build_payload(alpm_handle_t 
*handle,
                return payload;
 }
 
-static int find_dl_candidates(alpm_db_t *repo, alpm_list_t **files, 
alpm_list_t **deltas)
+static int find_dl_candidates(alpm_db_t *repo, alpm_list_t **files)
 {
        alpm_list_t *i;
        alpm_handle_t *handle = repo->handle;
@@ -891,8 +725,6 @@ static int find_dl_candidates(alpm_db_t *repo, alpm_list_t 
**files, alpm_list_t
                alpm_pkg_t *spkg = i->data;
 
                if(spkg->origin != ALPM_PKG_FROM_FILE && repo == 
spkg->origin_data.db) {
-                       alpm_list_t *delta_path = spkg->delta_path;
-
                        if(!repo->servers) {
                                handle->pm_errno = ALPM_ERR_SERVER_NONE;
                                _alpm_log(handle, ALPM_LOG_ERROR, "%s: %s\n",
@@ -900,22 +732,7 @@ static int find_dl_candidates(alpm_db_t *repo, alpm_list_t 
**files, alpm_list_t
                                return 1;
                        }
 
-                       if(delta_path) {
-                               /* using deltas */
-                               alpm_list_t *dlts;
-                               for(dlts = delta_path; dlts; dlts = dlts->next) 
{
-                                       alpm_delta_t *delta = dlts->data;
-                                       if(delta->download_size != 0) {
-                                               struct dload_payload *payload = 
build_payload(
-                                                               handle, 
delta->delta, delta->delta_size, repo->servers);
-                                               ASSERT(payload, return -1);
-                                               *files = alpm_list_add(*files, 
payload);
-                                       }
-                                       /* keep a list of all the delta files 
for md5sums */
-                                       *deltas = alpm_list_add(*deltas, delta);
-                               }
-
-                       } else if(spkg->download_size != 0) {
+                       if(spkg->download_size != 0) {
                                struct dload_payload *payload;
                                ASSERT(spkg->filename != NULL, RET_ERR(handle, 
ALPM_ERR_PKG_INVALID_NAME, -1));
                                payload = build_payload(handle, spkg->filename, 
spkg->size, repo->servers);
@@ -963,7 +780,7 @@ static int download_single_file(alpm_handle_t *handle, 
struct dload_payload *pay
        return -1;
 }
 
-static int download_files(alpm_handle_t *handle, alpm_list_t **deltas)
+static int download_files(alpm_handle_t *handle)
 {
        const char *cachedir;
        alpm_list_t *i, *files = NULL;
@@ -987,7 +804,7 @@ static int download_files(alpm_handle_t *handle, 
alpm_list_t **deltas)
        }
 
        for(i = handle->dbs_sync; i; i = i->next) {
-               errors += find_dl_candidates(i->data, &files, deltas);
+               errors += find_dl_candidates(i->data, &files);
        }
 
        if(files) {
@@ -1309,24 +1126,12 @@ static int load_packages(alpm_handle_t *handle, 
alpm_list_t **data,
 
 int _alpm_sync_load(alpm_handle_t *handle, alpm_list_t **data)
 {
-       alpm_list_t *i, *deltas = NULL;
+       alpm_list_t *i;
        size_t total = 0;
        uint64_t total_bytes = 0;
        alpm_trans_t *trans = handle->trans;
 
-       if(download_files(handle, &deltas)) {
-               alpm_list_free(deltas);
-               return -1;
-       }
-
-       if(validate_deltas(handle, deltas)) {
-               alpm_list_free(deltas);
-               return -1;
-       }
-       alpm_list_free(deltas);
-
-       /* Use the deltas to generate the packages */
-       if(apply_deltas(handle)) {
+       if(download_files(handle)) {
                return -1;
        }
 
diff --git a/src/pacman/callback.c b/src/pacman/callback.c
index b8e3dd73..22865614 100644
--- a/src/pacman/callback.c
+++ b/src/pacman/callback.c
@@ -347,14 +347,6 @@ void cb_event(alpm_event_t *event)
                case ALPM_EVENT_PKGDOWNLOAD_START:
                case ALPM_EVENT_PKGDOWNLOAD_DONE:
                case ALPM_EVENT_PKGDOWNLOAD_FAILED:
-               /* temporary until removed from libalpm */
-               case ALPM_EVENT_DELTA_INTEGRITY_START:
-               case ALPM_EVENT_DELTA_INTEGRITY_DONE:
-               case ALPM_EVENT_DELTA_PATCHES_START:
-               case ALPM_EVENT_DELTA_PATCHES_DONE:
-               case ALPM_EVENT_DELTA_PATCH_START:
-               case ALPM_EVENT_DELTA_PATCH_DONE:
-               case ALPM_EVENT_DELTA_PATCH_FAILED:
                        /* nothing */
                        break;
        }
-- 
2.20.1

Reply via email to