Xavier Chantry wrote:
Use the correct database format
Instead of getting all the info from the filename, which was a bit ugly, use
xdelta3 to get the source and destination files
Instead of looking for .delta files in the current directory when adding a
package, which was not very flexible, allow .delta files to be added with
repo-add just like package files. delta files can also be removed with
repo-remove. This is simply done by looking for a .delta extension in the
arguments, and calling the appropriate db_write_delta or db_remove_delta
functions.
Example usage:
repo-add repo/test.db.tar.gz repo/libx11-1.1.99.2-2-x86_64.pkg.tar.gz
repo-add repo/test.db.tar.gz repo/libx11-1.1.5-2_to_1.1.99.2-2-x86_64.delta
repo-remove repo/test.db.tar.gz libx11-1.1.5-2_to_1.1.99.2-2-x86_64.delta
Note that db_write_entry had to be modified so that the deltas file is not
lost on a package upgrade (remove + add). FS#13414 should be fixed in the
same time, by printing a different message when the same package is added.
Normal output:
==> Adding package 'repo/libx11-1.1.99.2-2-x86_64.pkg.tar.gz'
-> Removing version 'libx11-1.1.5-2'...
Warning:
==> Adding package 'repo/libx11-1.1.99.2-2-x86_64.pkg.tar.gz'
==> WARNING: An entry for 'libx11-1.1.99.2-2' already exists, overwriting...
Signed-off-by: Xavier Chantry <[email protected]>
---
scripts/repo-add.sh.in | 203 ++++++++++++++++++++++++++++--------------------
1 files changed, 120 insertions(+), 83 deletions(-)
diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
index c6d25aa..95b7959 100644
--- a/scripts/repo-add.sh.in
+++ b/scripts/repo-add.sh.in
@@ -57,8 +57,8 @@ error() {
# print usage instructions
usage() {
printf "repo-add, repo-remove (pacman) %s\n\n" "$myver"
- printf "$(gettext "Usage: repo-add [-q] <path-to-db> <package> ...\n")"
- printf "$(gettext "Usage: repo-remove [-q] <path-to-db> <packagename>
...\n\n")"
+ printf "$(gettext "Usage: repo-add [-q] <path-to-db> <package|delta>
...\n")"
+ printf "$(gettext "Usage: repo-remove [-q] <path-to-db> <packagename|delta>
...\n\n")"
printf "$(gettext "\
repo-add will update a package database by reading a package file.\n\
Multiple packages to add can be specified on the command line.\n\n")"
@@ -93,36 +93,84 @@ write_list_entry() {
fi
}
-# write a delta entry to the pacman database
-# arg1 - path to delta
+# Get the package name from the delta filename
+getpkgname() {
+ local tmp
+
+ tmp=${1##*/}
+ echo ${tmp%-*-*_to*}
+}
Rename this to getdeltapkgname to clarify it is only used for deltas?
Self document function names make my head hurt less.
Otherwise, a quick read of the other changes made sense to me, but I
will need to do this in more detail.
One comment that is moderately related to this. Should there be a
mechanism to inspect the deltas are remove the ones that are no longer
necessary? I.e. deltas with a broken chain, deltas who chain download
will be bigger than the package. Should that be a job of repo-add when
adding a new delta or a separate script?
Allan
_______________________________________________
pacman-dev mailing list
[email protected]
http://www.archlinux.org/mailman/listinfo/pacman-dev