summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/libalpm/alpm.c1
-rw-r--r--lib/libalpm/util.c2
-rw-r--r--scripts/makepkg.sh.in11
-rw-r--r--scripts/repo-add.sh.in27
4 files changed, 25 insertions, 16 deletions
diff --git a/lib/libalpm/alpm.c b/lib/libalpm/alpm.c
index abbc7db8..7780c1fd 100644
--- a/lib/libalpm/alpm.c
+++ b/lib/libalpm/alpm.c
@@ -117,6 +117,7 @@ int SYMEXPORT alpm_release(alpm_handle_t *myhandle)
ret = -1;
}
+ _alpm_handle_unlock(myhandle);
_alpm_handle_free(myhandle);
#ifdef HAVE_LIBCURL
diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c
index 991898e1..8bcb5463 100644
--- a/lib/libalpm/util.c
+++ b/lib/libalpm/util.c
@@ -300,7 +300,7 @@ int _alpm_unpack(alpm_handle_t *handle, const char *archive, const char *prefix,
/* If specific files were requested, skip entries that don't match. */
if(list) {
char *entry_prefix = strdup(entryname);
- char *p = strstr(prefix,"/");
+ char *p = strstr(entry_prefix,"/");
if(p) {
*(p+1) = '\0';
}
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index ed5cdef7..10272b38 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -518,7 +518,7 @@ download_sources() {
local file=$(get_filepath "$netfile" || true)
if [[ -n "$file" ]]; then
msg2 "$(gettext "Found %s")" "${file##*/}"
- rm -f "$srcdir/$file"
+ rm -f "$srcdir/${file##*/}"
ln -s "$file" "$srcdir/"
continue
fi
@@ -1562,7 +1562,7 @@ devel_check() {
newpkgver=$(date +%Y%m%d)
elif [[ -n ${_gitroot} && -n ${_gitname} ]] ; then
if ! type -p git >/dev/null; then
- warning "$(gettext "Cannot find the %s binary required to determine latest %s revision.")" "git "git"
+ warning "$(gettext "Cannot find the %s binary required to determine latest %s revision.")" "git" "git"
return 0
fi
msg "$(gettext "Determining latest %s revision...")" 'git'
@@ -1576,7 +1576,7 @@ devel_check() {
newpkgver=$(LC_ALL=C svn info $_svntrunk | sed -n 's/^Last Changed Rev: \([0-9]*\)$/\1/p')
elif [[ -n ${_bzrtrunk} && -n ${_bzrmod} ]] ; then
if ! type -p bzr >/dev/null; then
- warning "$(gettext "Cannot find the %s binary required to determine latest %s revision.")" "bzr" bzr"
+ warning "$(gettext "Cannot find the %s binary required to determine latest %s revision.")" "bzr" "bzr"
return 0
fi
msg "$(gettext "Determining latest %s revision...")" 'bzr'
@@ -1829,8 +1829,9 @@ else
exit 1 # $E_CONFIG_ERROR
fi
-# Source user-specific makepkg.conf overrides
-if [[ -r ~/.makepkg.conf ]]; then
+# Source user-specific makepkg.conf overrides, but only if no override config
+# file was specified
+if [[ $MAKEPKG_CONF = "$confdir/makepkg.conf" && -r ~/.makepkg.conf ]]; then
source ~/.makepkg.conf
fi
diff --git a/scripts/repo-add.sh.in b/scripts/repo-add.sh.in
index 17b32aab..0500b48c 100644
--- a/scripts/repo-add.sh.in
+++ b/scripts/repo-add.sh.in
@@ -100,7 +100,7 @@ format_entry() {
find_pkgentry() {
local pkgname=$1
local pkgentry
- for pkgentry in $tmpdir/$pkgname*; do
+ for pkgentry in $tmpdir/tree/$pkgname*; do
name=${pkgentry##*/}
if [[ ${name%-*-*} = $pkgname ]]; then
echo $pkgentry
@@ -285,7 +285,7 @@ db_write_entry() {
return 1
fi
- pushd "$tmpdir" >/dev/null
+ pushd "$tmpdir/tree" >/dev/null
if [[ -d $pkgname-$pkgver ]]; then
warning "$(gettext "An entry for '%s' already existed")" "$pkgname-$pkgver"
else
@@ -350,7 +350,7 @@ db_write_entry() {
# create files file if wanted
if (( WITHFILES )); then
msg2 "$(gettext "Creating '%s' db entry...")" 'files'
- local files_path="$tmpdir/$pkgname-$pkgver/files"
+ local files_path="$tmpdir/tree/$pkgname-$pkgver/files"
echo "%FILES%" >$files_path
bsdtar --exclude='^.*' -tf "$pkgfile" >>$files_path
fi
@@ -381,7 +381,7 @@ db_remove_entry() {
while [[ -n $pkgentry ]]; do
notfound=0
if [[ -f $pkgentry/deltas ]]; then
- mv "$pkgentry/deltas" "$tmpdir/$pkgname.deltas"
+ mv "$pkgentry/deltas" "$tmpdir/tree/$pkgname.deltas"
fi
msg2 "$(gettext "Removing existing entry '%s'...")" \
"${pkgentry##*/}"
@@ -443,7 +443,7 @@ check_repo_db() {
fi
verify_signature "$REPO_DB_FILE"
msg "$(gettext "Extracting database to a temporary location...")"
- bsdtar -xf "$REPO_DB_FILE" -C "$tmpdir"
+ bsdtar -xf "$REPO_DB_FILE" -C "$tmpdir/tree"
else
case "$cmd" in
repo-remove)
@@ -509,7 +509,7 @@ remove() {
msg "$(gettext "Searching for package '%s'...")" "$pkgname"
if db_remove_entry "$pkgname"; then
- rm -f "$tmpdir/$pkgname.deltas"
+ rm -f "$tmpdir/tree/$pkgname.deltas"
return 0
else
error "$(gettext "Package matching '%s' not found.")" "$pkgname"
@@ -561,6 +561,7 @@ fi
tmpdir=$(mktemp -d /tmp/repo-tools.XXXXXXXXXX) || (\
error "$(gettext "Cannot create temp directory for database building.")"; \
exit 1)
+mkdir $tmpdir/tree
trap 'clean_up' EXIT
trap 'trap_exit "$(gettext "TERM signal caught. Exiting...")"' TERM HUP QUIT
@@ -628,12 +629,18 @@ if (( success )); then
TAR_OPT=$(verify_repo_extension "$REPO_DB_FILE")
filename=${REPO_DB_FILE##*/}
- pushd "$tmpdir" >/dev/null
- # strip the './' off filenames; this also allows us to tar an empty dir
- bsdtar -s %^./%% -c${TAR_OPT}f "$REPO_DB_FILE" ./
- create_signature "$filename"
+ pushd "$tmpdir/tree" >/dev/null
+ if ( shopt -s nullglob; files=(*); (( ${#files[*]} )) ); then
+ bsdtar -c${TAR_OPT}f "$tmpdir/$filename" *
+ else
+ # we have no packages remaining? zip up some emptyness
+ warning "$(gettext "No packages remain, creating empty database.")"
+ bsdtar -c${TAR_OPT}f "$tmpdir/$filename" -T /dev/null
+ fi
popd >/dev/null
+ create_signature "$tmpdir/$filename"
+
[[ -f $REPO_DB_FILE ]] && mv -f "$REPO_DB_FILE" "${REPO_DB_FILE}.old"
[[ -f $REPO_DB_FILE.sig ]] && rm -f "$REPO_DB_FILE.sig"
[[ -f $tmpdir/$filename ]] && mv "$tmpdir/$filename" "$REPO_DB_FILE"