Merge branch 'maint'
Conflicts: scripts/repo-add.sh.in
This commit is contained in:
commit
ca4f8687f7
7 changed files with 142 additions and 73 deletions
1
contrib/.gitignore
vendored
1
contrib/.gitignore
vendored
|
@ -7,5 +7,4 @@ paclog-pkglist
|
||||||
pacscripts
|
pacscripts
|
||||||
pacsearch
|
pacsearch
|
||||||
pacsysclean
|
pacsysclean
|
||||||
wget-xdelta.sh
|
|
||||||
zsh_completion
|
zsh_completion
|
||||||
|
|
|
@ -83,7 +83,6 @@ paclog-pkglist: $(srcdir)/paclog-pkglist.in
|
||||||
pacscripts: $(srcdir)/pacscripts.in
|
pacscripts: $(srcdir)/pacscripts.in
|
||||||
pacsearch: $(srcdir)/pacsearch.in
|
pacsearch: $(srcdir)/pacsearch.in
|
||||||
pacsysclean: $(srcdir)/pacsysclean.in
|
pacsysclean: $(srcdir)/pacsysclean.in
|
||||||
pactree: $(srcdir)/pactree.in
|
|
||||||
zsh_completion: $(srcdir)/zsh_completion.in
|
zsh_completion: $(srcdir)/zsh_completion.in
|
||||||
|
|
||||||
# vim:set ts=2 sw=2 noet:
|
# vim:set ts=2 sw=2 noet:
|
||||||
|
|
|
@ -40,8 +40,9 @@ similar to `$_basekernver`.
|
||||||
|
|
||||||
*pkgname (array)*::
|
*pkgname (array)*::
|
||||||
Either the name of the package or an array of names for split packages.
|
Either the name of the package or an array of names for split packages.
|
||||||
Because it will be used in the package filename, this has to be unix-friendly.
|
Valid characters for members of this array are alphanumerics, and any of
|
||||||
Members of the array are not allowed to start with hyphens.
|
the following characters: ```@ . _ + -`''. Additionally, names are not
|
||||||
|
allowed to start with hyphens.
|
||||||
|
|
||||||
*pkgver*::
|
*pkgver*::
|
||||||
The version of the software as released from the author (e.g., '2.7.1').
|
The version of the software as released from the author (e.g., '2.7.1').
|
||||||
|
|
|
@ -11,7 +11,7 @@ pkgdelta - package delta generation utility
|
||||||
|
|
||||||
Synopsis
|
Synopsis
|
||||||
--------
|
--------
|
||||||
'pkgdelta' [-q] <package1> <package2>
|
'pkgdelta' [options] <package1> <package2>
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
|
@ -27,6 +27,16 @@ significantly.
|
||||||
|
|
||||||
Options
|
Options
|
||||||
-------
|
-------
|
||||||
|
*--max-delta-size <ratio>*::
|
||||||
|
Only create delta files if the delta is smaller than ratio * package_size.
|
||||||
|
Possible values: 0.0 to 2.0.
|
||||||
|
Recommended values: 0.2 to 0.9.
|
||||||
|
Default value: 0.7
|
||||||
|
|
||||||
|
*--min-pkg-size <size>*::
|
||||||
|
Minimal size of the package file in bytes to be considered for delta creation.
|
||||||
|
Default value: 1048576 bytes = 1MiB
|
||||||
|
|
||||||
*-q, \--quiet*::
|
*-q, \--quiet*::
|
||||||
Be quiet. Do not output anything but warnings and errors.
|
Be quiet. Do not output anything but warnings and errors.
|
||||||
|
|
||||||
|
|
|
@ -1497,6 +1497,11 @@ check_sanity() {
|
||||||
error "$(gettext "%s is not allowed to start with a hyphen.")" "pkgname"
|
error "$(gettext "%s is not allowed to start with a hyphen.")" "pkgname"
|
||||||
ret=1
|
ret=1
|
||||||
fi
|
fi
|
||||||
|
if [[ $i = *[^[:alnum:]+_.@-]* ]]; then
|
||||||
|
error "$(gettext "%s contains invalid characters: '%s'")" \
|
||||||
|
'pkgname' "${pkgname//[[:alnum:]+_.@-]}"
|
||||||
|
ret=1
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [[ ${pkgbase:0:1} = "-" ]]; then
|
if [[ ${pkgbase:0:1} = "-" ]]; then
|
||||||
|
|
|
@ -30,6 +30,13 @@ declare -r myver='@PACKAGE_VERSION@'
|
||||||
|
|
||||||
QUIET=0
|
QUIET=0
|
||||||
|
|
||||||
|
# minimal of package before deltas are generated (bytes)
|
||||||
|
min_pkg_size=$((1024*1024))
|
||||||
|
|
||||||
|
# percent of new package above which the delta will be discarded
|
||||||
|
max_delta_size=70
|
||||||
|
|
||||||
|
|
||||||
# ensure we have a sane umask set
|
# ensure we have a sane umask set
|
||||||
umask 0022
|
umask 0022
|
||||||
|
|
||||||
|
@ -38,11 +45,16 @@ m4_include(library/output_format.sh)
|
||||||
# print usage instructions
|
# print usage instructions
|
||||||
usage() {
|
usage() {
|
||||||
printf "pkgdelta (pacman) %s\n\n" "$myver"
|
printf "pkgdelta (pacman) %s\n\n" "$myver"
|
||||||
printf -- "$(gettext "Usage: pkgdelta [-q] <package1> <package2>\n")"
|
printf -- "$(gettext "Usage: pkgdelta [options] <package1> <package2>\n")"
|
||||||
printf -- "$(gettext "\
|
printf -- "$(gettext "\
|
||||||
pkgdelta will create a delta file between two packages.\n\
|
pkgdelta will create a delta file between two packages.\n\
|
||||||
This delta file can then be added to a database using repo-add.\n\n")"
|
This delta file can then be added to a database using repo-add.\n\n")"
|
||||||
printf -- "$(gettext "Example: pkgdelta pacman-3.0.0.pkg.tar.gz pacman-3.0.1.pkg.tar.gz")\n"
|
printf -- "$(gettext "Example: pkgdelta pacman-3.0.0.pkg.tar.gz pacman-3.0.1.pkg.tar.gz")\n"
|
||||||
|
echo
|
||||||
|
printf -- "$(gettext "Options:\n")"
|
||||||
|
printf -- " -q ""$(gettext "quiet\n")"
|
||||||
|
printf -- " --min-pkg-size ""$(gettext "minimal of package before deltas are generated (bytes)\n")"
|
||||||
|
printf -- " --max-delta-size ""$(gettext "percent of new package above which the delta will be discarded\n")"
|
||||||
}
|
}
|
||||||
|
|
||||||
version() {
|
version() {
|
||||||
|
@ -53,6 +65,10 @@ This is free software; see the source for copying conditions.\n\
|
||||||
There is NO WARRANTY, to the extent permitted by law.\n")"
|
There is NO WARRANTY, to the extent permitted by law.\n")"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isnumeric() {
|
||||||
|
[[ $1 != *[!0-9]* ]]
|
||||||
|
}
|
||||||
|
|
||||||
read_pkginfo()
|
read_pkginfo()
|
||||||
{
|
{
|
||||||
pkgname= pkgver= arch=
|
pkgname= pkgver= arch=
|
||||||
|
@ -93,6 +109,13 @@ create_xdelta()
|
||||||
newver="$pkgver"
|
newver="$pkgver"
|
||||||
newarch="$arch"
|
newarch="$arch"
|
||||||
|
|
||||||
|
pkgsize="$(@SIZECMD@ -L "$newfile")"
|
||||||
|
|
||||||
|
if ((pkgsize < min_pkg_size)); then
|
||||||
|
msg "$(gettext "Skipping delta creation for small package: %s - size %s")" "$newname" "$pkgsize"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ $oldname != "$newname" ]]; then
|
if [[ $oldname != "$newname" ]]; then
|
||||||
error "$(gettext "The package names don't match : '%s' and '%s'")" "$oldname" "$newname"
|
error "$(gettext "The package names don't match : '%s' and '%s'")" "$oldname" "$newname"
|
||||||
return 1
|
return 1
|
||||||
|
@ -109,46 +132,78 @@ create_xdelta()
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg "$(gettext "Generating delta from version %s to version %s")" "$oldver" "$newver"
|
msg "$(gettext "Generating delta from version %s to version %s")" "$oldver" "$newver"
|
||||||
deltafile="$(dirname $newfile)/$pkgname-${oldver}_to_${newver}-$arch.delta"
|
deltafile=$(dirname "$newfile")/$pkgname-${oldver}_to_${newver}-$arch.delta
|
||||||
local ret=0
|
local ret=0
|
||||||
|
|
||||||
xdelta3 -q -f -s "$oldfile" "$newfile" "$deltafile" || ret=$?
|
xdelta3 -q -f -s "$oldfile" "$newfile" "$deltafile" || ret=$?
|
||||||
if (( ret )); then
|
if (( ret )); then
|
||||||
error "$(gettext "Delta could not be created.")"
|
error "$(gettext "Delta could not be created.")"
|
||||||
return 1
|
return 1
|
||||||
else
|
fi
|
||||||
|
|
||||||
|
deltasize="$(@SIZECMD@ -L "$deltafile")"
|
||||||
|
|
||||||
|
if ((max_delta_size * pkgsize / 100 < deltasize)); then
|
||||||
|
msg "$(gettext "Delta package larger than maximum size. Removing.")"
|
||||||
|
rm -f "$deltafile"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
msg "$(gettext "Generated delta : '%s'")" "$deltafile"
|
msg "$(gettext "Generated delta : '%s'")" "$deltafile"
|
||||||
(( QUIET )) && echo "$deltafile"
|
(( QUIET )) && echo "$deltafile"
|
||||||
fi
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
declare -a args
|
||||||
|
|
||||||
|
# parse arguments
|
||||||
|
while (( $# )); do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-h|--help) usage; exit 0 ;;
|
-h|--help) usage; exit 0 ;;
|
||||||
-V|--version) version; exit 0 ;;
|
-V|--version) version; exit 0 ;;
|
||||||
-q|--quiet) QUIET=1; shift ;;
|
-q|--quiet) QUIET=1;;
|
||||||
|
--min-pkg-size)
|
||||||
|
if ! isnumeric "$2"; then
|
||||||
|
echo "invalid argument '$2' for option -- '$1'"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
min_pkg_size=$2
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--max-delta-size)
|
||||||
|
arg=$(echo "$2" | awk '{print $1 * 100}')
|
||||||
|
if ! isnumeric "$arg" || (($arg > 200)); then
|
||||||
|
echo "invalid argument '$2' for option -- '$1'"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
max_delta_size=$arg
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--) shift; args+=("$@"); break 2 ;;
|
||||||
|
-*) echo "invalid option -- '$1'"; usage; exit 1 ;;
|
||||||
|
*) args+=("$1");;
|
||||||
esac
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
if (( $# != 2 )); then
|
if (( ${#args[@]} != 2 )); then
|
||||||
usage
|
usage
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ ! -f $1 ]]; then
|
for i in "${args[@]}"; do
|
||||||
error "$(gettext "File '%s' does not exist")" "$1"
|
if [[ ! -f $i ]]; then
|
||||||
exit 1
|
error "$(gettext "File '%s' does not exist")" "$i"
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! -f $2 ]]; then
|
|
||||||
error "$(gettext "File '%s' does not exist")" "$2"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
if ! type xdelta3 &>/dev/null; then
|
if ! type xdelta3 &>/dev/null; then
|
||||||
error "$(gettext "Cannot find the xdelta3 binary! Is xdelta3 installed?")"
|
error "$(gettext "Cannot find the xdelta3 binary! Is xdelta3 installed?")"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
create_xdelta "$1" "$2"
|
create_xdelta "${args[@]}"
|
||||||
|
|
||||||
# vim: set ts=2 sw=2 noet:
|
# vim: set ts=2 sw=2 noet:
|
||||||
|
|
|
@ -108,7 +108,7 @@ format_entry() {
|
||||||
find_pkgentry() {
|
find_pkgentry() {
|
||||||
local pkgname=$1
|
local pkgname=$1
|
||||||
local pkgentry
|
local pkgentry
|
||||||
for pkgentry in $tmpdir/tree/$pkgname*; do
|
for pkgentry in "$tmpdir/tree/$pkgname"*; do
|
||||||
name=${pkgentry##*/}
|
name=${pkgentry##*/}
|
||||||
if [[ ${name%-*-*} = $pkgname ]]; then
|
if [[ ${name%-*-*} = $pkgname ]]; then
|
||||||
echo $pkgentry
|
echo $pkgentry
|
||||||
|
@ -129,31 +129,31 @@ get_delta_pkgname() {
|
||||||
# write a delta entry
|
# write a delta entry
|
||||||
# arg1 - path to delta file
|
# arg1 - path to delta file
|
||||||
db_write_delta() {
|
db_write_delta() {
|
||||||
deltafile="$1"
|
deltafile=$1
|
||||||
pkgname="$(get_delta_pkgname $deltafile)"
|
pkgname=$(get_delta_pkgname "$deltafile")
|
||||||
|
|
||||||
pkgentry=$(find_pkgentry $pkgname)
|
pkgentry=$(find_pkgentry "$pkgname")
|
||||||
if [[ -z $pkgentry ]]; then
|
if [[ -z $pkgentry ]]; then
|
||||||
error "$(gettext "No database entry for package '%s'.")" "$pkgname"
|
error "$(gettext "No database entry for package '%s'.")" "$pkgname"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
deltas="$pkgentry/deltas"
|
deltas=$pkgentry/deltas
|
||||||
if [[ ! -f $deltas ]]; then
|
if [[ ! -f $deltas ]]; then
|
||||||
echo -e "%DELTAS%" >$deltas
|
echo -e "%DELTAS%" >"$deltas"
|
||||||
fi
|
fi
|
||||||
# get md5sum and compressed size of package
|
# get md5sum and compressed size of package
|
||||||
md5sum="$(openssl dgst -md5 "$deltafile")"
|
md5sum=$(openssl dgst -md5 "$deltafile")
|
||||||
md5sum="${md5sum##* }"
|
md5sum=${md5sum##* }
|
||||||
csize=$(@SIZECMD@ -L "$deltafile")
|
csize=$(@SIZECMD@ -L "$deltafile")
|
||||||
|
|
||||||
oldfile=$(xdelta3 printhdr $deltafile | grep "XDELTA filename (source)" | sed 's/.*: *//')
|
oldfile=$(xdelta3 printhdr "$deltafile" | grep "XDELTA filename (source)" | sed 's/.*: *//')
|
||||||
newfile=$(xdelta3 printhdr $deltafile | grep "XDELTA filename (output)" | sed 's/.*: *//')
|
newfile=$(xdelta3 printhdr "$deltafile" | grep "XDELTA filename (output)" | sed 's/.*: *//')
|
||||||
|
|
||||||
if grep -q "$oldfile.*$newfile" $deltas; then
|
if grep -q "$oldfile.*$newfile" "$deltas"; then
|
||||||
sed -i.backup "/$oldfile.*$newfile/d" $deltas && rm -f $deltas.backup
|
sed -i.backup "/$oldfile.*$newfile/d" "$deltas" && rm -f "$deltas.backup"
|
||||||
fi
|
fi
|
||||||
msg2 "$(gettext "Adding 'deltas' entry : %s -> %s")" "$oldfile" "$newfile"
|
msg2 "$(gettext "Adding 'deltas' entry : %s -> %s")" "$oldfile" "$newfile"
|
||||||
echo ${deltafile##*/} $md5sum $csize $oldfile $newfile >> $deltas
|
echo "${deltafile##*/} $md5sum $csize $oldfile $newfile" >> "$deltas"
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
} # end db_write_delta
|
} # end db_write_delta
|
||||||
|
@ -161,20 +161,20 @@ db_write_delta() {
|
||||||
# remove a delta entry
|
# remove a delta entry
|
||||||
# arg1 - path to delta file
|
# arg1 - path to delta file
|
||||||
db_remove_delta() {
|
db_remove_delta() {
|
||||||
deltafile="$1"
|
deltafile=$1
|
||||||
filename=${deltafile##*/}
|
filename=${deltafile##*/}
|
||||||
pkgname="$(get_delta_pkgname $deltafile)"
|
pkgname=$(get_delta_pkgname "$deltafile")
|
||||||
|
|
||||||
pkgentry=$(find_pkgentry $pkgname)
|
pkgentry=$(find_pkgentry "$pkgname")
|
||||||
if [[ -z $pkgentry ]]; then
|
if [[ -z $pkgentry ]]; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
deltas="$pkgentry/deltas"
|
deltas=$pkgentry/deltas
|
||||||
if [[ ! -f $deltas ]]; then
|
if [[ ! -f $deltas ]]; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
if grep -q "$filename" $deltas; then
|
if grep -q "$filename" "$deltas"; then
|
||||||
sed -i.backup "/$filename/d" $deltas && rm -f $deltas.backup
|
sed -i.backup "/$filename/d" "$deltas" && rm -f "$deltas.backup"
|
||||||
msg2 "$(gettext "Removing existing entry '%s'...")" "$filename"
|
msg2 "$(gettext "Removing existing entry '%s'...")" "$filename"
|
||||||
# empty deltas file contains only "%DELTAS%"
|
# empty deltas file contains only "%DELTAS%"
|
||||||
if (( $(wc -l < "$deltas") == 1 )); then
|
if (( $(wc -l < "$deltas") == 1 )); then
|
||||||
|
@ -197,7 +197,7 @@ check_gpg() {
|
||||||
# sign the package database once repackaged
|
# sign the package database once repackaged
|
||||||
create_signature() {
|
create_signature() {
|
||||||
(( ! SIGN )) && return
|
(( ! SIGN )) && return
|
||||||
local dbfile="$1"
|
local dbfile=$1
|
||||||
local ret=0
|
local ret=0
|
||||||
msg "$(gettext "Signing database...")"
|
msg "$(gettext "Signing database...")"
|
||||||
|
|
||||||
|
@ -217,7 +217,7 @@ create_signature() {
|
||||||
# verify the existing package database signature
|
# verify the existing package database signature
|
||||||
verify_signature() {
|
verify_signature() {
|
||||||
(( ! VERIFY )) && return
|
(( ! VERIFY )) && return
|
||||||
local dbfile="$1"
|
local dbfile=$1
|
||||||
local ret=0
|
local ret=0
|
||||||
msg "$(gettext "Verifying database signature...")"
|
msg "$(gettext "Verifying database signature...")"
|
||||||
|
|
||||||
|
@ -237,7 +237,7 @@ verify_signature() {
|
||||||
verify_repo_extension() {
|
verify_repo_extension() {
|
||||||
local repofile=$1
|
local repofile=$1
|
||||||
|
|
||||||
case "$repofile" in
|
case $repofile in
|
||||||
*.@(db|files).tar.gz) TAR_OPT="z" ;;
|
*.@(db|files).tar.gz) TAR_OPT="z" ;;
|
||||||
*.@(db|files).tar.bz2) TAR_OPT="j" ;;
|
*.@(db|files).tar.bz2) TAR_OPT="j" ;;
|
||||||
*.@(db|files).tar.xz) TAR_OPT="J" ;;
|
*.@(db|files).tar.xz) TAR_OPT="J" ;;
|
||||||
|
@ -255,7 +255,7 @@ verify_repo_extension() {
|
||||||
# arg1 - path to package
|
# arg1 - path to package
|
||||||
db_write_entry() {
|
db_write_entry() {
|
||||||
# blank out all variables
|
# blank out all variables
|
||||||
local pkgfile="$1"
|
local pkgfile=$1
|
||||||
local -a _groups _licenses _replaces _depends _conflicts _provides _optdepends
|
local -a _groups _licenses _replaces _depends _conflicts _provides _optdepends
|
||||||
local pkgname pkgver pkgdesc csize size url arch builddate packager \
|
local pkgname pkgver pkgdesc csize size url arch builddate packager \
|
||||||
md5sum sha256sum pgpsig pgpsigsize
|
md5sum sha256sum pgpsig pgpsigsize
|
||||||
|
@ -268,7 +268,7 @@ db_write_entry() {
|
||||||
|
|
||||||
# normalize whitespace with an extglob
|
# normalize whitespace with an extglob
|
||||||
declare "$var=${val//+([[:space:]])/ }"
|
declare "$var=${val//+([[:space:]])/ }"
|
||||||
case "$var" in
|
case $var in
|
||||||
group) _groups+=("$group") ;;
|
group) _groups+=("$group") ;;
|
||||||
license) _licenses+=("$license") ;;
|
license) _licenses+=("$license") ;;
|
||||||
replaces) _replaces+=("$replaces") ;;
|
replaces) _replaces+=("$replaces") ;;
|
||||||
|
@ -289,10 +289,10 @@ db_write_entry() {
|
||||||
warning "$(gettext "An entry for '%s' already existed")" "$pkgname-$pkgver"
|
warning "$(gettext "An entry for '%s' already existed")" "$pkgname-$pkgver"
|
||||||
else
|
else
|
||||||
if (( DELTA )); then
|
if (( DELTA )); then
|
||||||
pkgentry=$(find_pkgentry $pkgname)
|
pkgentry=$(find_pkgentry "$pkgname")
|
||||||
if [[ -n $pkgentry ]]; then
|
if [[ -n $pkgentry ]]; then
|
||||||
local oldfilename=$(grep -A1 FILENAME $pkgentry/desc | tail -n1)
|
local oldfilename=$(grep -A1 FILENAME "$pkgentry/desc" | tail -n1)
|
||||||
local oldfile="$(dirname $1)/$oldfilename"
|
local oldfile="$(dirname "$1")/$oldfilename"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -312,10 +312,10 @@ db_write_entry() {
|
||||||
|
|
||||||
# compute checksums
|
# compute checksums
|
||||||
msg2 "$(gettext "Computing checksums...")"
|
msg2 "$(gettext "Computing checksums...")"
|
||||||
md5sum="$(openssl dgst -md5 "$pkgfile")"
|
md5sum=$(openssl dgst -md5 "$pkgfile")
|
||||||
md5sum="${md5sum##* }"
|
md5sum=${md5sum##* }
|
||||||
sha256sum="$(openssl dgst -sha256 "$pkgfile")"
|
sha256sum=$(openssl dgst -sha256 "$pkgfile")
|
||||||
sha256sum="${sha256sum##* }"
|
sha256sum=${sha256sum##* }
|
||||||
|
|
||||||
# remove an existing entry if it exists, ignore failures
|
# remove an existing entry if it exists, ignore failures
|
||||||
db_remove_entry "$pkgname"
|
db_remove_entry "$pkgname"
|
||||||
|
@ -371,17 +371,17 @@ db_write_entry() {
|
||||||
if (( WITHFILES )); then
|
if (( WITHFILES )); then
|
||||||
msg2 "$(gettext "Creating '%s' db entry...")" 'files'
|
msg2 "$(gettext "Creating '%s' db entry...")" 'files'
|
||||||
local files_path="$tmpdir/tree/$pkgname-$pkgver/files"
|
local files_path="$tmpdir/tree/$pkgname-$pkgver/files"
|
||||||
echo "%FILES%" >$files_path
|
echo "%FILES%" >"$files_path"
|
||||||
bsdtar --exclude='^.*' -tf "$pkgfile" >>$files_path
|
bsdtar --exclude='^.*' -tf "$pkgfile" >>"$files_path"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# create a delta file
|
# create a delta file
|
||||||
if (( DELTA )); then
|
if (( DELTA )); then
|
||||||
if [[ -n $oldfilename ]]; then
|
if [[ -n $oldfilename ]]; then
|
||||||
if [[ -f $oldfile ]]; then
|
if [[ -f $oldfile ]]; then
|
||||||
delta=$(pkgdelta -q $oldfile $1)
|
delta=$(pkgdelta -q "$oldfile" "$1")
|
||||||
if [[ -f $delta ]]; then
|
if [[ -f $delta ]]; then
|
||||||
db_write_delta $delta
|
db_write_delta "$delta"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
warning "$(gettext "Old package file not found: %s")" "$oldfilename"
|
warning "$(gettext "Old package file not found: %s")" "$oldfilename"
|
||||||
|
@ -397,7 +397,7 @@ db_write_entry() {
|
||||||
db_remove_entry() {
|
db_remove_entry() {
|
||||||
local pkgname=$1
|
local pkgname=$1
|
||||||
local notfound=1
|
local notfound=1
|
||||||
local pkgentry=$(find_pkgentry $pkgname)
|
local pkgentry=$(find_pkgentry "$pkgname")
|
||||||
while [[ -n $pkgentry ]]; do
|
while [[ -n $pkgentry ]]; do
|
||||||
notfound=0
|
notfound=0
|
||||||
if [[ -f $pkgentry/deltas ]]; then
|
if [[ -f $pkgentry/deltas ]]; then
|
||||||
|
@ -405,8 +405,8 @@ db_remove_entry() {
|
||||||
fi
|
fi
|
||||||
msg2 "$(gettext "Removing existing entry '%s'...")" \
|
msg2 "$(gettext "Removing existing entry '%s'...")" \
|
||||||
"${pkgentry##*/}"
|
"${pkgentry##*/}"
|
||||||
rm -rf $pkgentry
|
rm -rf "$pkgentry"
|
||||||
pkgentry=$(find_pkgentry $pkgname)
|
pkgentry=$(find_pkgentry "$pkgname")
|
||||||
done
|
done
|
||||||
return $notfound
|
return $notfound
|
||||||
} # end db_remove_entry
|
} # end db_remove_entry
|
||||||
|
@ -432,7 +432,7 @@ check_repo_db() {
|
||||||
# ensure the path to the DB exists; $LOCKFILE is always an absolute path
|
# ensure the path to the DB exists; $LOCKFILE is always an absolute path
|
||||||
repodir=${LOCKFILE%/*}/
|
repodir=${LOCKFILE%/*}/
|
||||||
|
|
||||||
if [[ ! -d "$repodir" ]]; then
|
if [[ ! -d $repodir ]]; then
|
||||||
error "$(gettext "%s does not exist or is not a directory.")" "$repodir"
|
error "$(gettext "%s does not exist or is not a directory.")" "$repodir"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
@ -442,7 +442,7 @@ check_repo_db() {
|
||||||
CLEAN_LOCK=1
|
CLEAN_LOCK=1
|
||||||
else
|
else
|
||||||
error "$(gettext "Failed to acquire lockfile: %s.")" "$LOCKFILE"
|
error "$(gettext "Failed to acquire lockfile: %s.")" "$LOCKFILE"
|
||||||
[[ -f $LOCKFILE ]] && error "$(gettext "Held by process %s")" "$(cat $LOCKFILE)"
|
[[ -f $LOCKFILE ]] && error "$(gettext "Held by process %s")" "$(cat "$LOCKFILE")"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -460,7 +460,7 @@ check_repo_db() {
|
||||||
msg "$(gettext "Extracting database to a temporary location...")"
|
msg "$(gettext "Extracting database to a temporary location...")"
|
||||||
bsdtar -xf "$REPO_DB_FILE" -C "$tmpdir/tree"
|
bsdtar -xf "$REPO_DB_FILE" -C "$tmpdir/tree"
|
||||||
else
|
else
|
||||||
case "$cmd" in
|
case $cmd in
|
||||||
repo-remove)
|
repo-remove)
|
||||||
error "$(gettext "Repository file '%s' was not found.")" "$REPO_DB_FILE"
|
error "$(gettext "Repository file '%s' was not found.")" "$REPO_DB_FILE"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -562,7 +562,7 @@ if ! type gettext &>/dev/null; then
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case "$1" in
|
case $1 in
|
||||||
-h|--help) usage; exit 0;;
|
-h|--help) usage; exit 0;;
|
||||||
-V|--version) version; exit 0;;
|
-V|--version) version; exit 0;;
|
||||||
esac
|
esac
|
||||||
|
@ -582,7 +582,7 @@ fi
|
||||||
tmpdir=$(mktemp -d "${TMPDIR:-/tmp}/repo-tools.XXXXXXXXXX") || (\
|
tmpdir=$(mktemp -d "${TMPDIR:-/tmp}/repo-tools.XXXXXXXXXX") || (\
|
||||||
error "$(gettext "Cannot create temp directory for database building.")"; \
|
error "$(gettext "Cannot create temp directory for database building.")"; \
|
||||||
exit 1)
|
exit 1)
|
||||||
mkdir $tmpdir/tree
|
mkdir "$tmpdir/tree"
|
||||||
|
|
||||||
trap 'clean_up' EXIT
|
trap 'clean_up' EXIT
|
||||||
for signal in TERM HUP QUIT; do
|
for signal in TERM HUP QUIT; do
|
||||||
|
@ -595,7 +595,7 @@ declare -a args
|
||||||
success=0
|
success=0
|
||||||
# parse arguments
|
# parse arguments
|
||||||
while (( $# )); do
|
while (( $# )); do
|
||||||
case "$1" in
|
case $1 in
|
||||||
-q|--quiet) QUIET=1;;
|
-q|--quiet) QUIET=1;;
|
||||||
-d|--delta) DELTA=1;;
|
-d|--delta) DELTA=1;;
|
||||||
-f|--files) WITHFILES=1;;
|
-f|--files) WITHFILES=1;;
|
||||||
|
@ -614,7 +614,7 @@ while (( $# )); do
|
||||||
-k|--key)
|
-k|--key)
|
||||||
check_gpg
|
check_gpg
|
||||||
shift
|
shift
|
||||||
GPGKEY="$1"
|
GPGKEY=$1
|
||||||
if ! gpg --list-key ${GPGKEY} &>/dev/null; then
|
if ! gpg --list-key ${GPGKEY} &>/dev/null; then
|
||||||
error "$(gettext "The key ${GPGKEY} does not exist in your keyring.")"
|
error "$(gettext "The key ${GPGKEY} does not exist in your keyring.")"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -647,7 +647,7 @@ verify_repo_extension "$REPO_DB_FILE" >/dev/null
|
||||||
check_repo_db
|
check_repo_db
|
||||||
|
|
||||||
for arg in "${args[@]:1}"; do
|
for arg in "${args[@]:1}"; do
|
||||||
case "$cmd" in
|
case $cmd in
|
||||||
repo-add) add "$arg" ;;
|
repo-add) add "$arg" ;;
|
||||||
repo-remove) remove "$arg" ;;
|
repo-remove) remove "$arg" ;;
|
||||||
esac && success=1
|
esac && success=1
|
||||||
|
@ -695,7 +695,7 @@ if (( success )); then
|
||||||
mv "$tempname.sig" "$REPO_DB_FILE.sig"
|
mv "$tempname.sig" "$REPO_DB_FILE.sig"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dblink="${REPO_DB_FILE%.tar*}"
|
dblink=${REPO_DB_FILE%.tar*}
|
||||||
rm -f "$dblink" "$dblink.sig"
|
rm -f "$dblink" "$dblink.sig"
|
||||||
ln -s "$filename" "$dblink" 2>/dev/null || \
|
ln -s "$filename" "$dblink" 2>/dev/null || \
|
||||||
ln "$filename" "$dblink" 2>/dev/null || \
|
ln "$filename" "$dblink" 2>/dev/null || \
|
||||||
|
|
Loading…
Add table
Reference in a new issue