summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <LukeShu@sbcglobal.net>2013-09-26 16:23:32 -0400
committerLuke Shumaker <LukeShu@sbcglobal.net>2013-09-26 16:23:32 -0400
commit67bcecbbe42c727936d825363fbd1e2173bab574 (patch)
tree4443427102b172f3963f98a6e32c76e7b1da4b1a
parent46e8d5b656945179d7dc79c6d5c93034f1495367 (diff)
parent9c85d116f0425817b4a631e7a693dc5c948e2470 (diff)
downloaddevtools-67bcecbbe42c727936d825363fbd1e2173bab574.tar.xz
Merge branch 'devtools' (early part)
Conflicts: arch-nspawn.in This effectively reverts my machine_name patch; I took a simpler route to dealing with a working_dir with funny characters in it, using a different scheme for the machine_name. This fixes the problems devtools' original scheme had, so I'm going back to that.
-rw-r--r--arch-nspawn.in28
-rw-r--r--checkpkg.in32
-rw-r--r--commitpkg.in2
3 files changed, 30 insertions, 32 deletions
diff --git a/arch-nspawn.in b/arch-nspawn.in
index ec9b2d3..bde77b6 100644
--- a/arch-nspawn.in
+++ b/arch-nspawn.in
@@ -40,15 +40,15 @@ shift $(($OPTIND - 1))
(( $EUID != 0 )) && die 'This script must be run as root.'
(( $# < 1 )) && die 'You must specify a directory.'
-working_dir="$(readlink -f $1)"
+working_dir=$(readlink -f "$1")
shift 1
[[ -z $working_dir ]] && die 'Please specify a working directory.'
if [[ -z $cache_dir ]]; then
- cache_dirs=($(pacman -v $cache_conf 2>&1 | grep '^Cache Dirs:' | sed 's/Cache Dirs:\s*//g'))
+ cache_dirs=($(pacman -v 2>&1 | grep '^Cache Dirs:' | sed 's/Cache Dirs:\s*//g'))
else
- cache_dirs=(${cache_dir})
+ cache_dirs=("$cache_dir")
fi
host_mirror=$(pacman -Sddp extra/devtools 2>/dev/null | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#')
@@ -56,31 +56,27 @@ host_mirror=$(pacman -Sddp extra/devtools 2>/dev/null | sed -r 's#(.*/)extra/os/
# {{{ functions
build_mount_args() {
- local p
declare -g mount_args=()
if [[ -n $host_mirror_path ]]; then
- printf -v p '%q' "$host_mirror_path"
- mount_args+=(--bind-ro="$p")
+ mount_args+=(--bind-ro="$host_mirror_path")
fi
- printf -v p '%q' "${cache_dirs[0]}"
- mount_args+=(--bind="$p")
+ mount_args+=(--bind="${cache_dirs[0]}")
for cache_dir in ${cache_dirs[@]:1}; do
- printf -v p '%q' "$cache_dir"
- mount_args+=(--bind-ro="$p")
+ mount_args+=(--bind-ro="$cache_dir")
done
}
copy_hostconf () {
cp -a /etc/pacman.d/gnupg "$working_dir/etc/pacman.d"
- echo "Server = $host_mirror" > $working_dir/etc/pacman.d/mirrorlist
+ echo "Server = $host_mirror" >"$working_dir/etc/pacman.d/mirrorlist"
- [[ -n $pac_conf ]] && cp $pac_conf $working_dir/etc/pacman.conf
- [[ -n $makepkg_conf ]] && cp $makepkg_conf $working_dir/etc/makepkg.conf
+ [[ -n $pac_conf ]] && cp $pac_conf "$working_dir/etc/pacman.conf"
+ [[ -n $makepkg_conf ]] && cp $makepkg_conf "$working_dir/etc/makepkg.conf"
- sed -r "s|^#?\\s*CacheDir.+|CacheDir = $(echo -n ${cache_dirs[@]})|g" -i $working_dir/etc/pacman.conf
+ sed -r "s|^#?\\s*CacheDir.+|CacheDir = $(echo -n ${cache_dirs[@]})|g" -i "$working_dir/etc/pacman.conf"
}
# }}}
@@ -98,8 +94,8 @@ copy_hostconf
eval $(grep '^CARCH=' "$working_dir/etc/makepkg.conf")
-machine_name="${working_dir##*/}"
-machine_name="${machine_name//\./-}"
+machine_name="${working_dir//[![:alnum:]_-]/-}"
+machine_name="${machine_name#-}"
exec ${CARCH:+setarch "$CARCH"} systemd-nspawn \
-D "$working_dir" \
diff --git a/checkpkg.in b/checkpkg.in
index 2cceafa..eb95745 100644
--- a/checkpkg.in
+++ b/checkpkg.in
@@ -1,5 +1,7 @@
#!/bin/bash
+shopt -s extglob
+
m4_include(lib/common.sh)
# Source makepkg.conf; fail if it is not found
@@ -18,22 +20,24 @@ if [[ ! -f PKGBUILD ]]; then
die 'This must be run in the directory of a built package.'
fi
-. PKGBUILD
+. ./PKGBUILD
if [[ $arch == 'any' ]]; then
CARCH='any'
fi
STARTDIR=$(pwd)
TEMPDIR=$(mktemp -d --tmpdir checkpkg-script.XXXX)
-cd "$TEMPDIR"
for _pkgname in "${pkgname[@]}"; do
- pkgfile=${_pkgname}-$(get_full_version $_pkgname)-${CARCH}${PKGEXT}
+ pkgfile=(${_pkgname}-$(get_full_version $_pkgname)-${CARCH}.pkg.tar?(.?z))
+ if (( ${#pkgfile[*]} != 1 )); then
+ die 'Ambiguous package name: %s\n' "${pkgfile[*]}"
+ fi
if [[ -f "$STARTDIR/$pkgfile" ]]; then
- ln -s "$STARTDIR/$pkgfile" "$pkgfile"
+ ln -s "$STARTDIR/$pkgfile" "$TEMPDIR/$pkgfile"
elif [[ -f "$PKGDEST/$pkgfile" ]]; then
- ln -s "$PKGDEST/$pkgfile" "$pkgfile"
+ ln -s "$PKGDEST/$pkgfile" "$TEMPDIR/$pkgfile"
else
die "File \"%s\" doesn't exist" "$pkgfile"
fi
@@ -58,23 +62,21 @@ for _pkgname in "${pkgname[@]}"; do
elif [[ -f "$STARTDIR/$oldpkg" ]]; then
ln -s "$STARTDIR/$oldpkg" "$oldpkg"
else
- curl -fsLC - --retry 3 --retry-delay 3 -o "$oldpkg" "$pkgurl"
+ curl -fsLC - --retry 3 --retry-delay 3 -o "$oldpkg" "$pkgurl"
fi
fi
- bsdtar tf "$oldpkg" | sort > "filelist-$_pkgname-old"
- bsdtar tf "$pkgfile" | sort > "filelist-$_pkgname"
+ bsdtar tf "$oldpkg" | sort > "$TEMPDIR/filelist-$_pkgname-old"
+ bsdtar tf "$pkgfile" | sort > "$TEMPDIR/filelist-$_pkgname"
- sdiff -s "filelist-$_pkgname-old" "filelist-$_pkgname"
+ sdiff -s "$TEMPDIR/filelist-$_pkgname-old" "$TEMPDIR/filelist-$_pkgname"
- if diff "filelist-$_pkgname-old" "filelist-$_pkgname" | grep '\.so' > /dev/null 2>&1; then
- mkdir -p pkg
- cd pkg
- bsdtar xf ../"$pkgfile" > /dev/null
- diff "../filelist-$_pkgname-old" "../filelist-$_pkgname" | awk '/>.*\.so/{$1 = ""; print $0}' | while read i; do
+ if diff "$TEMPDIR/filelist-$_pkgname"{-old,} | grep '\.so' &>/dev/null; then
+ mkdir -p "$TEMPDIR/pkg"
+ bsdtar -C "$TEMPDIR" xf ../"$pkgfile" #> /dev/null
+ diff "$TEMPDIR/filelist-$_pkgname-old" "$TEMPDIR/filelist-$_pkgname" | awk '/>.*\.so/{$1 = ""; print $0}' | while read i; do
echo "${i}: " "$(objdump -p "$i" | grep SONAME)"
done
- cd ..
else
msg "No soname differences for %s." "$_pkgname"
fi
diff --git a/commitpkg.in b/commitpkg.in
index ad1005b..fe9348b 100644
--- a/commitpkg.in
+++ b/commitpkg.in
@@ -36,7 +36,7 @@ if [[ ! -f PKGBUILD ]]; then
die 'No PKGBUILD file'
fi
-. PKGBUILD
+. ./PKGBUILD
pkgbase=${pkgbase:-$pkgname}
case "$cmd" in