Compare commits

...

14 Commits

Author SHA1 Message Date
Pierre Schmitz
164f5b758d prepare release 2013-10-20 13:32:16 +02:00
Pierre Schmitz
1ae58aed5b Remove libtool files by default 2013-10-20 13:31:02 +02:00
Allan McRae
0d16a91350 Make !staticlibs the default in makepkg.conf
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2013-10-19 16:26:54 +02:00
Dave Reisner
e77242c539 makechrootpkg: add generic support for additional bind mounts
Piggyback on systemd-nspawn's --bind and --bind-ro flags to allow
arbitrary mount points to be added to the build container.

Signed-off-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2013-08-19 22:11:27 +02:00
Dave Reisner
9c85d116f0 checkpkg: avoid using PKGEXT to guess tarball name
We can't rely on PKGEXT since it's not sourced from a controlled
location. Case in point, if a user sets PKGEXT=.pkg.tar.gz, checkpkg
fails and offers no easy workaround.

Instead, use glob expansion to resolve the name of the tarball, bailing
if it can't be found definitively. This involves some refactoring to
avoid modifying PWD (which is advisable regardless).

Signed-off-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2013-08-18 18:19:12 +02:00
Dave Reisner
914ebe3a74 ensure that PKGBUILDs aren't sourced via PATH
Fixes FS#36378.

Signed-off-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2013-08-18 18:17:31 +02:00
Dave Reisner
7267664ed8 arch-nspawn: allow oddly named directories
This fixes various errors one might encounter when trying to use a
build root or cachedir with whitespace in it.

Note that the cachedir fix is not a complete one, as pacman's output is
unreliable (and not meant for parsing here).

Signed-off-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2013-08-18 18:17:05 +02:00
Dave Reisner
e0f7c21a68 arch-nspawn: avoid escaping mount_args
eval is no longer involved in the execution of systemd-nspawn, so we no
longer need a layer of escaping on the arguments.

Signed-off-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2013-08-18 18:16:59 +02:00
Pierre Schmitz
8dbb02de4f Prepare release 2013-08-08 22:51:14 +02:00
Pierre Schmitz
b12d5eaf85 Update makepkg.conf from pacman 4.1.2 2013-08-08 22:50:19 +02:00
Dave Reisner
0fa2536957 Makefile: validate generated files as part of build
For example...

$ make
GEN checkpkg
GEN commitpkg
GEN archco
archco: line 179: unexpected EOF while looking for matching `"'
archco: line 181: syntax error: unexpected end of file
make: *** [archco] Error 2

Signed-off-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2013-08-08 21:28:19 +02:00
Dave Reisner
be3c71fa81 avoid injecting code into the format string
Now that die() properly forwards arguments to error(), we can expect
that the first arg is a format string and not the entirety of the
output.

Signed-off-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2013-08-08 21:28:10 +02:00
Dave Reisner
fb30cabe61 common: Properly forward arguments from die to error
Also allow this function to be called without arguments, in which case,
don't call error at all. Some uses of this function wrongly assumed
that this was already allowed.

Signed-off-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2013-08-08 21:28:00 +02:00
Florian Pritz
29e62278a7 arch-nspawn: remove leading - from the machine name/hostname
Signed-off-by: Florian Pritz <bluewind@xinu.at>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2013-08-08 21:24:55 +02:00
13 changed files with 82 additions and 64 deletions

View File

@@ -1,4 +1,4 @@
V=20130525 V=20131020
PREFIX = /usr/local PREFIX = /usr/local
@@ -77,6 +77,7 @@ edit = sed -e "s|@pkgdatadir[@]|$(DESTDIR)$(PREFIX)/share/devtools|g"
@m4 -P $@.in | $(edit) >$@ @m4 -P $@.in | $(edit) >$@
@chmod a-w "$@" @chmod a-w "$@"
@chmod +x "$@" @chmod +x "$@"
@bash -O extglob -n "$@"
clean: clean:
rm -f $(BINPROGS) bash_completion zsh_completion rm -f $(BINPROGS) bash_completion zsh_completion

View File

@@ -40,15 +40,15 @@ shift $(($OPTIND - 1))
(( $EUID != 0 )) && die 'This script must be run as root.' (( $EUID != 0 )) && die 'This script must be run as root.'
(( $# < 1 )) && die 'You must specify a directory.' (( $# < 1 )) && die 'You must specify a directory.'
working_dir="$(readlink -f $1)" working_dir=$(readlink -f "$1")
shift 1 shift 1
[[ -z $working_dir ]] && die 'Please specify a working directory.' [[ -z $working_dir ]] && die 'Please specify a working directory.'
if [[ -z $cache_dir ]]; then 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 else
cache_dirs=(${cache_dir}) cache_dirs=("$cache_dir")
fi fi
host_mirror=$(pacman -Sddp extra/devtools 2>/dev/null | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#') 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 # {{{ functions
build_mount_args() { build_mount_args() {
local p
declare -g mount_args=() declare -g mount_args=()
if [[ -n $host_mirror_path ]]; then if [[ -n $host_mirror_path ]]; then
printf -v p '%q' "$host_mirror_path" mount_args+=(--bind-ro="$host_mirror_path")
mount_args+=(--bind-ro="$p")
fi fi
printf -v p '%q' "${cache_dirs[0]}" mount_args+=(--bind="${cache_dirs[0]}")
mount_args+=(--bind="$p")
for cache_dir in ${cache_dirs[@]:1}; do for cache_dir in ${cache_dirs[@]:1}; do
printf -v p '%q' "$cache_dir" mount_args+=(--bind-ro="$cache_dir")
mount_args+=(--bind-ro="$p")
done done
} }
copy_hostconf () { copy_hostconf () {
cp -a /etc/pacman.d/gnupg "$working_dir/etc/pacman.d" 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 $pac_conf ]] && cp $pac_conf "$working_dir/etc/pacman.conf"
[[ -n $makepkg_conf ]] && cp $makepkg_conf $working_dir/etc/makepkg.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"
} }
# }}} # }}}
@@ -88,9 +84,9 @@ umask 0022
# Sanity check # Sanity check
if [[ ! -f "$working_dir/.arch-chroot" ]]; then if [[ ! -f "$working_dir/.arch-chroot" ]]; then
die "'$working_dir' does not appear to be a Arch chroot." die "'%s' does not appear to be a Arch chroot." "$working_dir"
elif [[ $(cat "$working_dir/.arch-chroot") != $CHROOT_VERSION ]]; then elif [[ $(cat "$working_dir/.arch-chroot") != $CHROOT_VERSION ]]; then
die "chroot '$working_dir' is not at version $CHROOT_VERSION. Please rebuild." die "chroot '%s' is not at version %s. Please rebuild." "$working_dir" "$CHROOT_VERSION"
fi fi
build_mount_args build_mount_args
@@ -98,8 +94,11 @@ copy_hostconf
eval $(grep '^CARCH=' "$working_dir/etc/makepkg.conf") eval $(grep '^CARCH=' "$working_dir/etc/makepkg.conf")
machine_name="${working_dir//[![:alnum:]_-]/-}"
machine_name="${machine_name#-}"
exec ${CARCH:+setarch "$CARCH"} systemd-nspawn 2>/dev/null \ exec ${CARCH:+setarch "$CARCH"} systemd-nspawn 2>/dev/null \
-D "$working_dir" \ -D "$working_dir" \
--machine "${working_dir//\//-}" \ --machine "$machine_name" \
"${mount_args[@]}" \ "${mount_args[@]}" \
"$@" "$@"

View File

@@ -15,7 +15,7 @@ case $scriptname in
communityco) communityco)
SVNURL="svn+ssh://svn-community@nymeria.archlinux.org/srv/repos/svn-community/svn";; SVNURL="svn+ssh://svn-community@nymeria.archlinux.org/srv/repos/svn-community/svn";;
*) *)
die "Couldn't find svn url for $scriptname" die "Couldn't find svn url for %s" "$scriptname"
;; ;;
esac esac

View File

@@ -8,8 +8,8 @@ FORCE=
while getopts ':f' flag; do while getopts ':f' flag; do
case $flag in case $flag in
f) FORCE=1 ;; f) FORCE=1 ;;
:) die "Option requires an argument -- '$OPTARG'" ;; :) die "Option requires an argument -- '%s'" "$OPTARG" ;;
\?) die "Invalid option -- '$OPTARG'" ;; \?) die "Invalid option -- '%s'" "$OPTARG" ;;
esac esac
done done
shift $(( OPTIND - 1 )) shift $(( OPTIND - 1 ))
@@ -23,7 +23,7 @@ fi
if [[ -z $FORCE ]]; then if [[ -z $FORCE ]]; then
for tag in "$@"; do for tag in "$@"; do
if ! in_array "$tag" "${_tags[@]}"; then if ! in_array "$tag" "${_tags[@]}"; then
die 'archrelease: Invalid tag: "'$tag'" (use -f to force release)' die "archrelease: Invalid tag: '%s' (use -f to force release)" "$tag"
fi fi
done done
fi fi

View File

@@ -1,5 +1,7 @@
#!/bin/bash #!/bin/bash
shopt -s extglob
m4_include(lib/common.sh) m4_include(lib/common.sh)
# Source makepkg.conf; fail if it is not found # 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.' die 'This must be run in the directory of a built package.'
fi fi
. PKGBUILD . ./PKGBUILD
if [[ $arch == 'any' ]]; then if [[ $arch == 'any' ]]; then
CARCH='any' CARCH='any'
fi fi
STARTDIR=$(pwd) STARTDIR=$(pwd)
TEMPDIR=$(mktemp -d --tmpdir checkpkg-script.XXXX) TEMPDIR=$(mktemp -d --tmpdir checkpkg-script.XXXX)
cd "$TEMPDIR"
for _pkgname in "${pkgname[@]}"; do 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 if [[ -f "$STARTDIR/$pkgfile" ]]; then
ln -s "$STARTDIR/$pkgfile" "$pkgfile" ln -s "$STARTDIR/$pkgfile" "$TEMPDIR/$pkgfile"
elif [[ -f "$PKGDEST/$pkgfile" ]]; then elif [[ -f "$PKGDEST/$pkgfile" ]]; then
ln -s "$PKGDEST/$pkgfile" "$pkgfile" ln -s "$PKGDEST/$pkgfile" "$TEMPDIR/$pkgfile"
else else
die "File \"$pkgfile\" doesn't exist" die "File \"$pkgfile\" doesn't exist"
fi fi
@@ -41,13 +45,13 @@ for _pkgname in "${pkgname[@]}"; do
pkgurl=$(pacman -Spdd --print-format '%l' --noconfirm "$_pkgname") pkgurl=$(pacman -Spdd --print-format '%l' --noconfirm "$_pkgname")
if [[ $? -ne 0 ]]; then if [[ $? -ne 0 ]]; then
die "Couldn't download previous package for $_pkgname." die "Couldn't download previous package for %s." "$_pkgname"
fi fi
oldpkg=${pkgurl##*://*/} oldpkg=${pkgurl##*://*/}
if [[ ${oldpkg##*/} = ${pkgfile##*/} ]]; then if [[ ${oldpkg##*/} = ${pkgfile##*/} ]]; then
die "The built package ($_pkgname) is the one in the repo right now!" die "The built package (%s) is the one in the repo right now!" "$_pkgname"
fi fi
if [[ ! -f $oldpkg ]]; then if [[ ! -f $oldpkg ]]; then
@@ -58,23 +62,21 @@ for _pkgname in "${pkgname[@]}"; do
elif [[ -f "$STARTDIR/$oldpkg" ]]; then elif [[ -f "$STARTDIR/$oldpkg" ]]; then
ln -s "$STARTDIR/$oldpkg" "$oldpkg" ln -s "$STARTDIR/$oldpkg" "$oldpkg"
else else
curl -fsLC - --retry 3 --retry-delay 3 -o "$oldpkg" "$pkgurl" curl -fsLC - --retry 3 --retry-delay 3 -o "$oldpkg" "$pkgurl"
fi fi
fi fi
bsdtar tf "$oldpkg" | sort > "filelist-$_pkgname-old" bsdtar tf "$oldpkg" | sort > "$TEMPDIR/filelist-$_pkgname-old"
bsdtar tf "$pkgfile" | sort > "filelist-$_pkgname" 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 if diff "$TEMPDIR/filelist-$_pkgname"{-old,} | grep '\.so' &>/dev/null; then
mkdir -p pkg mkdir -p "$TEMPDIR/pkg"
cd pkg bsdtar -C "$TEMPDIR" xf ../"$pkgfile" #> /dev/null
bsdtar xf ../"$pkgfile" > /dev/null diff "$TEMPDIR/filelist-$_pkgname-old" "$TEMPDIR/filelist-$_pkgname" | awk '/>.*\.so/{$1 = ""; print $0}' | while read i; do
diff "../filelist-$_pkgname-old" "../filelist-$_pkgname" | awk '/>.*\.so/{$1 = ""; print $0}' | while read i; do
echo "${i}: " "$(objdump -p "$i" | grep SONAME)" echo "${i}: " "$(objdump -p "$i" | grep SONAME)"
done done
cd ..
else else
msg "No soname differences for $_pkgname." msg "No soname differences for $_pkgname."
fi fi

View File

@@ -36,7 +36,7 @@ if [[ ! -f PKGBUILD ]]; then
die 'No PKGBUILD file' die 'No PKGBUILD file'
fi fi
. PKGBUILD . ./PKGBUILD
pkgbase=${pkgbase:-$pkgname} pkgbase=${pkgbase:-$pkgname}
case "$cmd" in case "$cmd" in
@@ -58,7 +58,7 @@ esac
# check if all local source files are under version control # check if all local source files are under version control
for s in "${source[@]}"; do for s in "${source[@]}"; do
if [[ $s != *://* ]] && ! svn status -v "$s@" | grep -q '^[ AMRX~]'; then if [[ $s != *://* ]] && ! svn status -v "$s@" | grep -q '^[ AMRX~]'; then
die "$s is not under version control" die "%s is not under version control" "$s"
fi fi
done done
@@ -68,7 +68,7 @@ for i in 'changelog' 'install'; do
# evaluate any bash variables used # evaluate any bash variables used
eval file=\"$(sed 's/^\(['\''"]\)\(.*\)\1$/\2/' <<< "$file")\" eval file=\"$(sed 's/^\(['\''"]\)\(.*\)\1$/\2/' <<< "$file")\"
if ! svn status -v "${file}" | grep -q '^[ AMRX~]'; then if ! svn status -v "${file}" | grep -q '^[ AMRX~]'; then
die "${file} is not under version control" die "%s is not under version control" "$file"
fi fi
done < <(sed -n "s/^[[:space:]]*$i=//p" PKGBUILD) done < <(sed -n "s/^[[:space:]]*$i=//p" PKGBUILD)
done done
@@ -81,8 +81,8 @@ while getopts ':l:a:s:f' flag; do
s) server=$OPTARG ;; s) server=$OPTARG ;;
l) rsyncopts+=("--bwlimit=$OPTARG") ;; l) rsyncopts+=("--bwlimit=$OPTARG") ;;
a) commit_arch=$OPTARG ;; a) commit_arch=$OPTARG ;;
:) die "Option requires an argument -- '$OPTARG'" ;; :) die "Option requires an argument -- '%s'" "$OPTARG" ;;
\?) die "Invalid option -- '$OPTARG'" ;; \?) die "Invalid option -- '%s'" "$OPTARG" ;;
esac esac
done done
shift $(( OPTIND - 1 )) shift $(( OPTIND - 1 ))
@@ -164,7 +164,7 @@ for _arch in ${arch[@]}; do
gpg --detach-sign --use-agent ${SIGNWITHKEY} "${pkgfile}" || die gpg --detach-sign --use-agent ${SIGNWITHKEY} "${pkgfile}" || die
fi fi
if ! gpg --verify "$sigfile" >/dev/null 2>&1; then if ! gpg --verify "$sigfile" >/dev/null 2>&1; then
die "Signature ${pkgfile}.sig is incorrect!" die "Signature %s.sig is incorrect!" "$pkgfile"
fi fi
uploads+=("$sigfile") uploads+=("$sigfile")
done done

View File

@@ -25,7 +25,7 @@ case $scriptname in
target_repo='extra' target_repo='extra'
;; ;;
*) *)
die "Couldn't find configuration for $scriptname" die "Couldn't find configuration for %s" "$scriptname"
;; ;;
esac esac

View File

@@ -16,7 +16,7 @@ script_mode=${0##*/find-lib}
case $script_mode in case $script_mode in
deps|provides) true;; deps|provides) true;;
*) die "Unknown mode $script_mode" ;; *) die "Unknown mode %s" "$script_mode" ;;
esac esac
if [[ -z $1 ]]; then if [[ -z $1 ]]; then

View File

@@ -82,7 +82,7 @@ trap_exit() {
} }
die() { die() {
error "$*" (( $# )) && error "$@"
cleanup 1 cleanup 1
} }

View File

@@ -24,6 +24,9 @@ passeddir=
declare -a install_pkgs declare -a install_pkgs
declare -i ret=0 declare -i ret=0
bindmounts_ro=()
bindmounts_rw=()
copy=$USER copy=$USER
[[ -n $SUDO_USER ]] && copy=$SUDO_USER [[ -n $SUDO_USER ]] && copy=$SUDO_USER
[[ -z "$copy" || $copy = root ]] && copy=copy [[ -z "$copy" || $copy = root ]] && copy=copy
@@ -48,6 +51,8 @@ usage() {
echo 'Flags:' echo 'Flags:'
echo '-h This help' echo '-h This help'
echo '-c Clean the chroot before building' echo '-c Clean the chroot before building'
echo '-d <dir> Bind directory into build chroot as read-write'
echo '-D <dir> Bind directory into build chroot as read-only'
echo '-u Update the working copy of the chroot before building' echo '-u Update the working copy of the chroot before building'
echo ' This is useful for rebuilds without dirtying the pristine' echo ' This is useful for rebuilds without dirtying the pristine'
echo ' chroot' echo ' chroot'
@@ -61,10 +66,12 @@ usage() {
exit 1 exit 1
} }
while getopts 'hcur:I:l:nT' arg; do while getopts 'hcur:I:l:nTD:d:' arg; do
case "$arg" in case "$arg" in
h) usage ;; h) usage ;;
c) clean_first=true ;; c) clean_first=true ;;
D) bindmounts_ro+=(--bind-ro="$OPTARG") ;;
d) bindmounts_rw+=(--bind="$OPTARG") ;;
u) update_first=true ;; u) update_first=true ;;
r) passeddir="$OPTARG" ;; r) passeddir="$OPTARG" ;;
I) install_pkgs+=("$OPTARG") ;; I) install_pkgs+=("$OPTARG") ;;
@@ -81,8 +88,8 @@ done
# Canonicalize chrootdir, getting rid of trailing / # Canonicalize chrootdir, getting rid of trailing /
chrootdir=$(readlink -e "$passeddir") chrootdir=$(readlink -e "$passeddir")
[[ ! -d $chrootdir ]] && die "No chroot dir defined, or invalid path '$passeddir'" [[ ! -d $chrootdir ]] && die "No chroot dir defined, or invalid path '%s'" "$passeddir"
[[ ! -d $chrootdir/root ]] && die "Missing chroot dir root directory. Try using: mkarchroot $chrootdir/root base-devel" [[ ! -d $chrootdir/root ]] && die "Missing chroot dir root directory. Try using: mkarchroot %s/root base-devel" "$chrootdir"
# Detect chrootdir filesystem type # Detect chrootdir filesystem type
chroottype=$(stat -f -c %T "$chrootdir") chroottype=$(stat -f -c %T "$chrootdir")
@@ -136,10 +143,10 @@ create_chroot() {
if [[ "$chroottype" == btrfs ]]; then if [[ "$chroottype" == btrfs ]]; then
if [[ -d $copydir ]]; then if [[ -d $copydir ]]; then
btrfs subvolume delete "$copydir" >/dev/null || btrfs subvolume delete "$copydir" >/dev/null ||
die "Unable to delete subvolume $copydir" die "Unable to delete subvolume %s" "$copydir"
fi fi
btrfs subvolume snapshot "$chrootdir/root" "$copydir" >/dev/null || btrfs subvolume snapshot "$chrootdir/root" "$copydir" >/dev/null ||
die "Unable to create subvolume $copydir" die "Unable to create subvolume %s" "$copydir"
else else
mkdir -p "$copydir" mkdir -p "$copydir"
rsync -a --delete -q -W -x "$chrootdir/root/" "$copydir" rsync -a --delete -q -W -x "$chrootdir/root/" "$copydir"
@@ -155,11 +162,11 @@ clean_temporary() {
stat_busy "Removing temporary copy [$copy]" stat_busy "Removing temporary copy [$copy]"
if [[ "$chroottype" == btrfs ]]; then if [[ "$chroottype" == btrfs ]]; then
btrfs subvolume delete "$copydir" >/dev/null || btrfs subvolume delete "$copydir" >/dev/null ||
die "Unable to delete subvolume $copydir" die "Unable to delete subvolume %s" "$copydir"
else else
# avoid change of filesystem in case of an umount failure # avoid change of filesystem in case of an umount failure
rm --recursive --force --one-file-system "$copydir" || rm --recursive --force --one-file-system "$copydir" ||
die "Unable to delete $copydir" die "Unable to delete %s" "$copydir"
fi fi
# remove lock file # remove lock file
@@ -174,7 +181,9 @@ install_packages() {
pkgname="${install_pkg##*/}" pkgname="${install_pkg##*/}"
cp "$install_pkg" "$copydir/$pkgname" cp "$install_pkg" "$copydir/$pkgname"
arch-nspawn "$copydir" pacman -U /$pkgname --noconfirm arch-nspawn "$copydir" \
"${bindmounts_ro[@]}" "${bindmounts_rw[@]}" \
pacman -U /$pkgname --noconfirm
(( ret += !! $? )) (( ret += !! $? ))
rm "$copydir/$pkgname" rm "$copydir/$pkgname"
@@ -338,7 +347,9 @@ load_vars /etc/makepkg.conf
create_chroot create_chroot
$update_first && arch-nspawn "$copydir" pacman -Syu --noconfirm $update_first && arch-nspawn "$copydir" \
"${bindmounts_ro[@]}" "${bindmounts_rw[@]}" \
pacman -Syu --noconfirm
[[ -n ${install_pkgs[*]} ]] && install_packages [[ -n ${install_pkgs[*]} ]] && install_packages
@@ -349,6 +360,7 @@ download_sources
if arch-nspawn "$copydir" \ if arch-nspawn "$copydir" \
--bind-ro="$PWD:/startdir_host" \ --bind-ro="$PWD:/startdir_host" \
--bind-ro="$SRCDEST:/srcdest_host" \ --bind-ro="$SRCDEST:/srcdest_host" \
"${bindmounts_ro[@]}" "${bindmounts_rw[@]}" \
/chrootbuild /chrootbuild
then then
move_products move_products
@@ -362,7 +374,7 @@ if (( ret != 0 )); then
if $temp_chroot; then if $temp_chroot; then
die "Build failed" die "Build failed"
else else
die "Build failed, check $copydir/build" die "Build failed, check %s/build" "$copydir"
fi fi
else else
true true

View File

@@ -67,7 +67,7 @@ BUILDENV=(fakeroot !distcc color !ccache check !sign)
# These are default values for the options=() settings # These are default values for the options=() settings
######################################################################### #########################################################################
# #
# Default: OPTIONS=(strip docs libtool staticlibs emptydirs zipman purge !upx !debug) # Default: OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !upx !debug)
# A negated option will do the opposite of the comments below. # A negated option will do the opposite of the comments below.
# #
#-- strip: Strip symbols from binaries/libraries #-- strip: Strip symbols from binaries/libraries
@@ -80,7 +80,7 @@ BUILDENV=(fakeroot !distcc color !ccache check !sign)
#-- upx: Compress binary executable files using UPX #-- upx: Compress binary executable files using UPX
#-- debug: Add debugging flags as specified in DEBUG_* variables #-- debug: Add debugging flags as specified in DEBUG_* variables
# #
OPTIONS=(strip docs libtool staticlibs emptydirs zipman purge !upx !debug) OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !upx !debug)
#-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512 #-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512
INTEGRITY_CHECK=(md5) INTEGRITY_CHECK=(md5)
@@ -109,6 +109,8 @@ PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod)
#SRCDEST=/home/sources #SRCDEST=/home/sources
#-- Source packages: specify a fixed directory where all src packages will be placed #-- Source packages: specify a fixed directory where all src packages will be placed
#SRCPKGDEST=/home/srcpackages #SRCPKGDEST=/home/srcpackages
#-- Log files: specify a fixed directory where all log files will be placed
#LOGDEST=/home/makepkglogs
#-- Packager: name/email of the person or organization building packages #-- Packager: name/email of the person or organization building packages
#PACKAGER="John Doe <john@doe.com>" #PACKAGER="John Doe <john@doe.com>"
#-- Specify a key to use for package signing #-- Specify a key to use for package signing

View File

@@ -67,7 +67,7 @@ BUILDENV=(fakeroot !distcc color !ccache check !sign)
# These are default values for the options=() settings # These are default values for the options=() settings
######################################################################### #########################################################################
# #
# Default: OPTIONS=(strip docs libtool staticlibs emptydirs zipman purge !upx !debug) # Default: OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !upx !debug)
# A negated option will do the opposite of the comments below. # A negated option will do the opposite of the comments below.
# #
#-- strip: Strip symbols from binaries/libraries #-- strip: Strip symbols from binaries/libraries
@@ -80,7 +80,7 @@ BUILDENV=(fakeroot !distcc color !ccache check !sign)
#-- upx: Compress binary executable files using UPX #-- upx: Compress binary executable files using UPX
#-- debug: Add debugging flags as specified in DEBUG_* variables #-- debug: Add debugging flags as specified in DEBUG_* variables
# #
OPTIONS=(strip docs libtool staticlibs emptydirs zipman purge !upx !debug) OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !upx !debug)
#-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512 #-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512
INTEGRITY_CHECK=(md5) INTEGRITY_CHECK=(md5)
@@ -109,6 +109,8 @@ PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod)
#SRCDEST=/home/sources #SRCDEST=/home/sources
#-- Source packages: specify a fixed directory where all src packages will be placed #-- Source packages: specify a fixed directory where all src packages will be placed
#SRCPKGDEST=/home/srcpackages #SRCPKGDEST=/home/srcpackages
#-- Log files: specify a fixed directory where all log files will be placed
#LOGDEST=/home/makepkglogs
#-- Packager: name/email of the person or organization building packages #-- Packager: name/email of the person or organization building packages
#PACKAGER="John Doe <john@doe.com>" #PACKAGER="John Doe <john@doe.com>"
#-- Specify a key to use for package signing #-- Specify a key to use for package signing

View File

@@ -51,7 +51,7 @@ fi
umask 0022 umask 0022
[[ -e $working_dir ]] && die "Working directory '$working_dir' already exists" [[ -e $working_dir ]] && die "Working directory '%s' already exists" "$working_dir"
mkdir -p "$working_dir" mkdir -p "$working_dir"
@@ -60,7 +60,7 @@ lock 9 "${working_dir}.lock" "Locking chroot"
if [[ $(stat -f -c %T "$working_dir") == btrfs ]]; then if [[ $(stat -f -c %T "$working_dir") == btrfs ]]; then
rmdir "$working_dir" rmdir "$working_dir"
if ! btrfs subvolume create "$working_dir"; then if ! btrfs subvolume create "$working_dir"; then
die "Couldn't create subvolume for '$working_dir'" die "Couldn't create subvolume for '%s'" "$working_dir"
fi fi
chmod 0755 "$working_dir" chmod 0755 "$working_dir"
fi fi