Compare commits

..

8 Commits

Author SHA1 Message Date
Pierre Schmitz
905198295d Prepare release 2014-05-10 08:09:49 +02:00
Sébastien Luttringer
03611dc63e Switch to root when started as regular user
In collaborative builder machine, these scripts are often allowed to become root
via sudo. This patch avoid to prefix them by sudo each time or call su.

Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2014-05-10 08:05:08 +02:00
BlackEagle
7aac293d76 get_full_version :: remove duplicated epoch check
Signed-off-by: BlackEagle <ike.devolder@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2014-05-10 08:04:51 +02:00
BlackEagle
6db31cc16a when cleanup is called without code exit with 0
Signed-off-by: BlackEagle <ike.devolder@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2014-05-10 08:04:24 +02:00
BlackEagle
4ee45fe6d4 abort and die are serious errors so throw 255 out
Signed-off-by: BlackEagle <ike.devolder@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2014-05-10 08:03:58 +02:00
Jan Alexander Steffens (heftig)
0b2ae245f1 Update mtime of chroot when building
Makes the chroot mtime a useful indicator of last usage.

Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2014-05-10 08:01:41 +02:00
Joel Teichroeb
fdd079f3d5 Remove broken unknown arguments check and fix usage
If getopts comes across an unknown argument, $arg it set to '?' and
$OPTARG is unset. Therefore the getopts line detecting unknown arguments
doesn't work. Arguments to pass to makepkg are already handled by
passing all the aguments after the end-of-options marker (--), but this
wasn't documented in the usage text.

Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2014-05-10 08:00:56 +02:00
Allan McRae
9f7ba3d407 Use -fstack-protector-strong
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2014-05-04 07:39:54 +02:00
8 changed files with 33 additions and 19 deletions

View File

@@ -1,4 +1,4 @@
V=20131107 V=20140510
PREFIX = /usr/local PREFIX = /usr/local

View File

@@ -37,8 +37,8 @@ while getopts 'hC:M:c:' arg; do
done done
shift $(($OPTIND - 1)) shift $(($OPTIND - 1))
(( $EUID != 0 )) && die 'This script must be run as root.'
(( $# < 1 )) && die 'You must specify a directory.' (( $# < 1 )) && die 'You must specify a directory.'
check_root "$0" "$@"
working_dir=$(readlink -f "$1") working_dir=$(readlink -f "$1")
shift 1 shift 1

View File

@@ -40,9 +40,7 @@ done
# Pass all arguments after -- right to makepkg # Pass all arguments after -- right to makepkg
makechrootpkg_args+=("${@:$OPTIND}") makechrootpkg_args+=("${@:$OPTIND}")
if (( EUID )); then check_root "$0" "$@"
die 'This script must be run as root.'
fi
if ${clean_first} || [[ ! -d "${chroots}/${repo}-${arch}" ]]; then if ${clean_first} || [[ ! -d "${chroots}/${repo}-${arch}" ]]; then
msg "Creating chroot for [${repo}] (${arch})..." msg "Creating chroot for [${repo}] (${arch})..."

View File

@@ -65,12 +65,12 @@ setup_workdir() {
cleanup() { cleanup() {
[[ -n $WORKDIR ]] && rm -rf "$WORKDIR" [[ -n $WORKDIR ]] && rm -rf "$WORKDIR"
[[ $1 ]] && exit $1 exit ${1:-0}
} }
abort() { abort() {
msg 'Aborting...' error 'Aborting...'
cleanup 0 cleanup 255
} }
trap_abort() { trap_abort() {
@@ -85,7 +85,7 @@ trap_exit() {
die() { die() {
(( $# )) && error "$@" (( $# )) && error "$@"
cleanup 1 cleanup 255
} }
trap 'trap_abort' INT QUIT TERM HUP trap 'trap_abort' INT QUIT TERM HUP
@@ -114,7 +114,7 @@ get_full_version() {
pkgbase=${pkgbase:-${pkgname[0]}} pkgbase=${pkgbase:-${pkgname[0]}}
epoch=${epoch:-0} epoch=${epoch:-0}
if [[ -z $1 ]]; then if [[ -z $1 ]]; then
if [[ $epoch ]] && (( ! $epoch )); then if (( ! epoch )); then
echo $pkgver-$pkgrel echo $pkgver-$pkgrel
else else
echo $epoch:$pkgver-$pkgrel echo $epoch:$pkgver-$pkgrel
@@ -228,3 +228,16 @@ find_cached_package() {
return 1 return 1
esac 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.'
}

View File

@@ -35,8 +35,8 @@ src_owner=${SUDO_USER:-$USER}
usage() { usage() {
echo "Usage: ${0##*/} [options] -r <chrootdir> [--] [makepkg args]" echo "Usage: ${0##*/} [options] -r <chrootdir> [--] [makepkg args]"
echo ' Run this script in a PKGBUILD dir to build a package inside a' 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 ' clean chroot. Arguments passed to this script after the'
echo ' will be passed to makepkg.' echo ' end-of-options marker (--) will be passed to makepkg.'
echo '' echo ''
echo ' The chroot dir consists of the following directories:' echo ' The chroot dir consists of the following directories:'
echo ' <chrootdir>/{root, copy} but only "root" is required' echo ' <chrootdir>/{root, copy} but only "root" is required'
@@ -78,11 +78,10 @@ while getopts 'hcur:I:l:nTD:d:' arg; do
l) copy="$OPTARG" ;; l) copy="$OPTARG" ;;
n) run_namcap=true; makepkg_args="$makepkg_args -i" ;; n) run_namcap=true; makepkg_args="$makepkg_args -i" ;;
T) temp_chroot=true; copy+="-$$" ;; T) temp_chroot=true; copy+="-$$" ;;
*) makepkg_args="$makepkg_args -$arg $OPTARG" ;;
esac esac
done done
(( 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.' [[ ! -f PKGBUILD && -z "${install_pkgs[*]}" ]] && die 'This must be run in a directory containing a PKGBUILD.'
@@ -158,6 +157,9 @@ create_chroot() {
# Drop the read lock again # Drop the read lock again
exec 8>&- exec 8>&-
fi fi
# Update mtime
touch "$copydir"
} }
clean_temporary() { clean_temporary() {

View File

@@ -30,8 +30,8 @@ CHOST="i686-pc-linux-gnu"
# -march (or -mcpu) builds exclusively for an architecture # -march (or -mcpu) builds exclusively for an architecture
# -mtune optimizes for an architecture, but builds for whole processor family # -mtune optimizes for an architecture, but builds for whole processor family
CPPFLAGS="-D_FORTIFY_SOURCE=2" CPPFLAGS="-D_FORTIFY_SOURCE=2"
CFLAGS="-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 --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" LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro"
#-- Make Flags: change this for DistCC/SMP systems #-- Make Flags: change this for DistCC/SMP systems
#MAKEFLAGS="-j2" #MAKEFLAGS="-j2"

View File

@@ -30,8 +30,8 @@ CHOST="x86_64-unknown-linux-gnu"
# -march (or -mcpu) builds exclusively for an architecture # -march (or -mcpu) builds exclusively for an architecture
# -mtune optimizes for an architecture, but builds for whole processor family # -mtune optimizes for an architecture, but builds for whole processor family
CPPFLAGS="-D_FORTIFY_SOURCE=2" CPPFLAGS="-D_FORTIFY_SOURCE=2"
CFLAGS="-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 --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" LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro"
#-- Make Flags: change this for DistCC/SMP systems #-- Make Flags: change this for DistCC/SMP systems
#MAKEFLAGS="-j2" #MAKEFLAGS="-j2"

View File

@@ -35,9 +35,10 @@ while getopts 'hC:M:c:' arg; do
done done
shift $(($OPTIND - 1)) 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.' (( $# < 2 )) && die 'You must specify a directory and one or more packages.'
check_root "$0" "$@"
working_dir="$(readlink -f $1)" working_dir="$(readlink -f $1)"
shift 1 shift 1