[pacman-dev] [PATCH 1/4] Add delta information to the repository database.
Nathan Jones
nathanj at insightbb.com
Mon Oct 15 17:51:09 EDT 2007
Signed-off-by: Nathan Jones <nathanj at insightbb.com>
---
scripts/repo-add.sh.in | 46 +++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 45 insertions(+), 1 deletions(-)
diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
index cb741d7..67fa4f1 100644
--- a/scripts/repo-add.sh.in
+++ b/scripts/repo-add.sh.in
@@ -97,6 +97,34 @@ write_list_entry() {
fi
}
+# write a delta entry to the pacman database
+# arg1 - path to delta
+db_write_delta()
+{
+ # blank out all variables and set deltafile
+ local deltafile=$(readlink -f "$1")
+ local filename=$(basename "$deltafile")
+ local pkgname fromver tover arch csize md5sum
+
+ pkgname="$(echo "$filename" | sed -e 's/\(.*\)-\(.*-.*\)_to_\(.*-.*\)-\(.*\).delta/\1/')"
+ fromver="$(echo "$filename" | sed -e 's/\(.*\)-\(.*-.*\)_to_\(.*-.*\)-\(.*\).delta/\2/')"
+ tover="$(echo "$filename" | sed -e 's/\(.*\)-\(.*-.*\)_to_\(.*-.*\)-\(.*\).delta/\3/')"
+ arch="$(echo "$filename" | sed -e 's/\(.*\)-\(.*-.*\)_to_\(.*-.*\)-\(.*\).delta/\4/')"
+ md5sum="$(md5sum "$deltafile" | cut -d ' ' -f 1)"
+
+ # get size of delta
+ csize=$(du -b -L "$deltafile" | cut -f 1)
+
+ # ensure $pkgname and $pkgver variables were found
+ if [ -z "$pkgname" -o -z "$fromver" ]; then
+ return 1
+ fi
+
+ # add the entry for this delta file
+ echo -e "$fromver $tover $csize $filename $md5sum" >>deltas
+} # end db_write_delta
+
+
# write an entry to the pacman database
# arg1 - path to package
db_write_entry()
@@ -106,6 +134,7 @@ db_write_entry()
local pkgname pkgver pkgdesc url builddate packager csize size \
group depend backup license replaces provides conflict \
_groups _depends _backups _licenses _replaces _provides _conflicts
+ local startdir
local OLDIFS="$IFS"
# IFS (field seperator) is only the newline character
@@ -133,6 +162,7 @@ db_write_entry()
# get compressed size of package
csize=$(du -b -L "$pkgfile" | cut -f 1)
+ startdir=`pwd`
pushd "$gstmpdir" 2>&1 >/dev/null
# ensure $pkgname and $pkgver variables were found
@@ -183,8 +213,22 @@ db_write_entry()
write_list_entry "CONFLICTS" "$_conflicts" "depends"
write_list_entry "PROVIDES" "$_provides" "depends"
+ # create deltas entry
+ msg2 "$(gettext "Creating 'deltas' db entry...")"
+ echo -e "%DELTAS%" >>deltas
+ for delta in $startdir/$pkgname-*-*_to_*-*-$arch.delta; do
+ if [ -e "$delta" ]; then
+ if db_write_delta "$delta"; then
+ msg2 "$(gettext "Added delta '%s'")" "$(basename "$delta")"
+ else
+ msg2 "$(gettext "Could not add delta '%s'")" "$(basename "$delta")"
+ fi
+ fi
+ done
+ echo -e "" >>deltas
+
# preserve the modification time
- touch -r "$pkgfile" desc depends
+ touch -r "$pkgfile" desc depends deltas
popd 2>&1 >/dev/null
} # end db_write_entry
--
1.5.3.4
More information about the pacman-dev
mailing list