From 962250da23024224fc9e0be782b16ae08df46671 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Thu, 2 May 2013 15:06:04 -0400 Subject: Update for the new devtools-par (major) * `src/devtools`: Redo to get devtools from another location, and patch it * `src/chroot-tools/{chcleanup,chroot.conf}`: Only install 'base-devel' by default * libremkchroot: deprecate in favor of `librechroot make` * librechroot: - redo option parsing to be a "sub-command" (git-like) interface, instead of having esoteric flags (pacman-like). - add more documentation. - allow COPY to be an absolute path - generally clean up and use updated functions from `makechrootpkg.sh` * libremakepkg: - allow COPY to be an absolute path - update to work with the new `makechrootpkg.sh`: - `makechrootpkg.sh:chroot_exec()` -> `libremakepkg:run()` - `makechrootpkg.sh:chroot_init()` -> `libremakepkg:chroot_init()` - All functions from `makechrootpkg.sh` are wrapped, because they don't work with `set -euE`. - Other small changes --- src/chroot-tools/libremakepkg | 181 +++++++++++++++++++++++++++++++++++------- 1 file changed, 152 insertions(+), 29 deletions(-) (limited to 'src/chroot-tools/libremakepkg') diff --git a/src/chroot-tools/libremakepkg b/src/chroot-tools/libremakepkg index a9e1fb7..25f23c6 100755 --- a/src/chroot-tools/libremakepkg +++ b/src/chroot-tools/libremakepkg @@ -3,7 +3,7 @@ # Copyright 2010 - 2011 Nicolás Reynolds # Copyright 2011 Joshua Ismael Haase Hernández -# Copyright 2012 Luke Shumaker +# Copyright 2012-2013 Luke Shumaker # # This file is part of Parabola. # @@ -23,22 +23,131 @@ . /usr/share/libretools/conf.sh load_conf_libretools_chroot -. "$(which libremessages)" -. /usr/share/devtools/makechrootpkg.sh +. libremessages shopt -s nullglob +umask 0022 -# Boring functions ############################################################# +# Boring/mundane functions ##################################################### -## # End inmediately but print a useful message -## trap_exit() { - copy_logs error "$*" + set +euE + . /usr/share/devtools/makechrootpkg.sh + chroot_copy_out_logs "$@" exit 1 } +# Usage run [-N] $copydir "$cmd" +# Runs cmd properly, whether in a chroot already or not. +# +# Note that $cmd is a quoted string, not a list of arguments. +# $copydir=/ if INCHROOT=true +# +# Environment +# - $INCHROOT is set +run() { + local HASNET=true + [[ $1 == -N ]] && { HASNET=false; shift; } + local cmd="$*" + + cat >"$copydir/chrootexec" <> "$copydir/etc/makepkg.conf" < Use this chroot instead of \`$CHROOT'" - echo " -l Use this chroot copy instead \`$CHROOTCOPY'" - echo " -m Use the command MAKEPKG instead of \'makepkg'" + echo ' -n Name of the chroot to use' + echo ' -l Name of, or absolute path to, the copy to use' + echo ' -R Repackage contents of the package without rebuilding' echo ' -h Show this message' } +# Globals: $CHROOTDIR, $CHROOT, $COPY and $copydir +# Globals: $makepkg_args, $INCHROOT main() { # Parse command line ################################################### - CHROOTCOPY=$LIBREUSER - [[ $CHROOTCOPY != root ]] || CHROOTCOPY=copy + COPY=$LIBREUSER + [[ $COPY != root ]] || COPY=copy makepkg_args='-s --noconfirm -L ' - MAKEPKG=makepkg + local repack=false INCHROOT=false if [[ -f /.arch-chroot ]]; then INCHROOT=true fi - while getopts 'n:l:m:Rh' arg ; do + while getopts 'n:l:Rh' arg ; do case "${arg}" in n) CHROOT=$OPTARG;; - l) CHROOTCOPY=$OPTARG;; - m) MAKEPKG=$OPTARG;; - h) usage; exit 0;; - *) usage; exit 1;; + l) COPY=$OPTARG;; + R) repack=true; makepkg_args+=" -R";; + h) usage; return 0;; + *) usage; return 1;; esac done shift $(($OPTIND - 1)) @@ -134,9 +255,11 @@ main() { makepkg_args+=" $*" if $INCHROOT; then - copydir='' + copydir='/' + elif [[ ${COPY:0:1} = / ]]; then + copydir=$COPY else - copydir="${CHROOTDIR}/${CHROOT}/${CHROOTCOPY}" + copydir="${CHROOTDIR}/${CHROOT}/${COPY}" fi # Init ################################################################# @@ -148,14 +271,14 @@ main() { if [[ ! -f PKGBUILD ]]; then # This is the message used by makepkg - error "PKGBUILD does not exist" + error "PKGBUILD does not exist." exit 1 fi # Trap signals from makepkg trap 'trap_exit "(libremakepkg): TERM signal caught. Exiting..."' TERM HUP QUIT trap 'trap_exit "(libremakepkg): Aborted by user! Exiting..."' INT - trap 'trap_exit "(libremakepkg): An unknown error has occurred. Exiting..."' ERR + trap 'trap_exit "(libremakepkg): An error has occurred. Exiting..."' ERR SRCDEST="$(get_conf_makepkg SRCDEST .)" PKGDEST="$(get_conf_makepkg PKGDEST .)" @@ -163,7 +286,7 @@ main() { # OK, we're starting now ############################################### lock_open_write 9 "$copydir" \ - "Waiting for existing lock on \`$copydir' to be released" + "Waiting for existing lock on chroot copy to be released: [$COPY]" # Set target CARCH as it might be used within the PKGBUILD to select # correct sources @@ -171,17 +294,17 @@ main() { export CARCH="$(get_conf_makepkg CARCH)" unset MAKEPKG_CONF - $INCHROOT || chroot_init + $INCHROOT || chroot_init "$copydir" "$repack" check_pkgbuild - $INCHROOT || chroot_copy_in + $INCHROOT || chroot_copy_in "$copydir" extract check_src build check_pkg - add_to_local_repo - $INCHROOT || chroot_copy_out + add_to_local_repo "$copydir" + $INCHROOT || chroot_copy_out "$copydir" "$LIBREUSER" } main "$@" -- cgit v1.2.3-54-g00ecf