summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <LukeShu@sbcglobal.net>2014-05-10 18:06:29 -0400
committerLuke Shumaker <LukeShu@sbcglobal.net>2014-05-10 18:06:29 -0400
commit33730fc272bec6376a28d8f813e9e35ec4f84175 (patch)
tree0b85c3687a968fe83baa879952984f18f75f3061
parent534d2015b45e013b37e1edbb997bd4df27d7b8fd (diff)
parent905198295dcb4fffcd16edff3fd7052a4cfc5788 (diff)
Merge remote-tracking branch 'arch/master'
Conflicts: lib/common.sh makechrootpkg.in
-rw-r--r--Makefile2
-rw-r--r--arch-nspawn.in2
-rw-r--r--archbuild.in4
-rw-r--r--lib/common.sh23
-rw-r--r--makechrootpkg.in13
-rw-r--r--makepkg-i686.conf4
-rw-r--r--makepkg-x86_64.conf4
-rw-r--r--mkarchroot.in3
8 files changed, 34 insertions, 21 deletions
diff --git a/Makefile b/Makefile
index 1f3c74d..82a7362 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-V=20131107
+V=20140510
PREFIX = /usr/local
diff --git a/arch-nspawn.in b/arch-nspawn.in
index 94002f1..0bdd921 100644
--- a/arch-nspawn.in
+++ b/arch-nspawn.in
@@ -37,8 +37,8 @@ while getopts 'hC:M:c:' arg; do
done
shift $(($OPTIND - 1))
-(( $EUID != 0 )) && die 'This script must be run as root.'
(( $# < 1 )) && die 'You must specify a directory.'
+check_root "$0" "$@"
working_dir=$(readlink -f "$1")
shift 1
diff --git a/archbuild.in b/archbuild.in
index ec70b59..64e0904 100644
--- a/archbuild.in
+++ b/archbuild.in
@@ -40,9 +40,7 @@ done
# Pass all arguments after -- right to makepkg
makechrootpkg_args+=("${@:$OPTIND}")
-if (( EUID )); then
- die 'This script must be run as root.'
-fi
+check_root "$0" "$@"
if ${clean_first} || [[ ! -d "${chroots}/${repo}-${arch}" ]]; then
msg "Creating chroot for [%s] (%s)..." "${repo}" "${arch}"
diff --git a/lib/common.sh b/lib/common.sh
index dff9b43..455e841 100644
--- a/lib/common.sh
+++ b/lib/common.sh
@@ -71,12 +71,12 @@ cleanup() {
if [[ -n ${WORKDIR:-} ]] && $_setup_workdir; then
rm -rf "$WORKDIR"
fi
- [[ -n ${1:-} ]] && exit $1
+ exit ${1:-0}
}
abort() {
- msg 'Aborting...'
- cleanup 0
+ error 'Aborting...'
+ cleanup 255
}
trap_abort() {
@@ -91,7 +91,7 @@ trap_exit() {
die() {
(( $# )) && error "$@"
- cleanup 1
+ cleanup 255
}
##
@@ -117,7 +117,7 @@ get_full_version() {
pkgbase=${pkgbase:-${pkgname[0]}}
epoch=${epoch:-0}
if [[ -z $1 ]]; then
- if [[ $epoch ]] && (( ! $epoch )); then
+ if (( ! epoch )); then
echo $pkgver-$pkgrel
else
echo $epoch:$pkgver-$pkgrel
@@ -258,3 +258,16 @@ find_cached_package() {
return 1
esac
}
+
+##
+# usage : check_root ("$0" "$@")
+##
+check_root() {
+ (( EUID == 0 )) && return
+ if type -P sudo >/dev/null; then
+ exec sudo -- "$@"
+ else
+ exec su root -c "$(printf '%q' "$@")"
+ fi
+ die 'This script must be run as root.'
+}
diff --git a/makechrootpkg.in b/makechrootpkg.in
index 71fd5d9..e2dd0b7 100644
--- a/makechrootpkg.in
+++ b/makechrootpkg.in
@@ -36,8 +36,8 @@ src_owner=${SUDO_USER:-$USER}
usage() {
echo "Usage: ${0##*/} [options] -r <chrootdir> [--] [makepkg args]"
echo ' Run this script in a PKGBUILD dir to build a package inside a'
- echo ' clean chroot. All unrecognized arguments passed to this script'
- echo ' will be passed to makepkg.'
+ echo ' clean chroot. Arguments passed to this script after the'
+ echo ' end-of-options marker (--) will be passed to makepkg.'
echo ''
echo ' The chroot dir consists of the following directories:'
echo ' <chrootdir>/{root, copy} but only "root" is required'
@@ -79,12 +79,10 @@ while getopts 'hcur:I:l:nTD:d:' arg; do
l) copy="$OPTARG" ;;
n) run_namcap=true; makepkg_args+=('-i') ;;
T) temp_chroot=true; copy+="-$$" ;;
- *) usage >&2 ;;
esac
done
-shift $(($OPTIND - 1))
-(( EUID != 0 )) && die 'This script must be run as root.'
+check_root "$0" "$@"
[[ ! -f PKGBUILD && -z "${install_pkgs[*]}" ]] && die 'This must be run in a directory containing a PKGBUILD.'
@@ -103,7 +101,7 @@ else
fi
# Pass all arguments after -- right to makepkg
-makepkg_args+=("$@")
+makepkg_args+=("${@:OPTIND}")
# See if -R was passed to makepkg
for arg in "${@:OPTIND}"; do
@@ -160,6 +158,9 @@ create_chroot() {
# Drop the read lock again
lock_close 8
fi
+
+ # Update mtime
+ touch "$copydir"
}
clean_temporary() {
diff --git a/makepkg-i686.conf b/makepkg-i686.conf
index fcb131f..da249f6 100644
--- a/makepkg-i686.conf
+++ b/makepkg-i686.conf
@@ -30,8 +30,8 @@ CHOST="i686-pc-linux-gnu"
# -march (or -mcpu) builds exclusively for an architecture
# -mtune optimizes for an architecture, but builds for whole processor family
CPPFLAGS="-D_FORTIFY_SOURCE=2"
-CFLAGS="-march=i686 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4"
-CXXFLAGS="-march=i686 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4"
+CFLAGS="-march=i686 -mtune=generic -O2 -pipe -fstack-protector-strong --param=ssp-buffer-size=4"
+CXXFLAGS="-march=i686 -mtune=generic -O2 -pipe -fstack-protector-strong --param=ssp-buffer-size=4"
LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro"
#-- Make Flags: change this for DistCC/SMP systems
#MAKEFLAGS="-j2"
diff --git a/makepkg-x86_64.conf b/makepkg-x86_64.conf
index 330c242..33dbe99 100644
--- a/makepkg-x86_64.conf
+++ b/makepkg-x86_64.conf
@@ -30,8 +30,8 @@ CHOST="x86_64-unknown-linux-gnu"
# -march (or -mcpu) builds exclusively for an architecture
# -mtune optimizes for an architecture, but builds for whole processor family
CPPFLAGS="-D_FORTIFY_SOURCE=2"
-CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4"
-CXXFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4"
+CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong --param=ssp-buffer-size=4"
+CXXFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong --param=ssp-buffer-size=4"
LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro"
#-- Make Flags: change this for DistCC/SMP systems
#MAKEFLAGS="-j2"
diff --git a/mkarchroot.in b/mkarchroot.in
index 07bf7c6..09ba64f 100644
--- a/mkarchroot.in
+++ b/mkarchroot.in
@@ -35,9 +35,10 @@ while getopts 'hC:M:c:' arg; do
done
shift $(($OPTIND - 1))
-(( $EUID != 0 )) && die 'This script must be run as root.'
(( $# < 2 )) && die 'You must specify a directory and one or more packages.'
+check_root "$0" "$@"
+
working_dir="$(readlink -f $1)"
shift 1