summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <LukeShu@sbcglobal.net>2012-11-28 15:20:59 -0500
committerLuke Shumaker <LukeShu@sbcglobal.net>2012-11-28 15:20:59 -0500
commit00d67a5051e5d4163acffa80b7ef85f81f7e548f (patch)
tree2d27a49d659c7736871ca302eebc1df2d5ae3fa5
parentfd1e5a426713715d9c0e3fabbfe0d8a20b629bad (diff)
take (some) advantage of chroottools, fix some compatability things
mkarchroot/archroot's option parsing is a little less flexible (but a lot more understandable) than it was before.
-rwxr-xr-xsrc/chroot-tools/librechroot51
-rwxr-xr-xsrc/chroot-tools/libremkchroot6
-rwxr-xr-xsrc/libremessages96
3 files changed, 39 insertions, 114 deletions
diff --git a/src/chroot-tools/librechroot b/src/chroot-tools/librechroot
index 48e6cdc..8830c39 100755
--- a/src/chroot-tools/librechroot
+++ b/src/chroot-tools/librechroot
@@ -27,53 +27,12 @@
cmd=${0##*/}
-lock_open_write() {
- local fd=$1
- local path=$2
- local msg=$3
-
- # Only reopen the FD if it wasn't handed to us
- if [[ $(readlink -f /dev/fd/$fd) != "${path}.lock" ]]; then
- eval "exec $fd>${path}.lock"
- fi
-
- if ! flock -n $fd; then
- stat_busy "$msg"
- flock $fd
- stat_done
- fi
-}
-
-lock_open_read() {
- local fd=$1
- local path=$2
- local msg=$3
-
- # Only reopen the FD if it wasn't handed to us
- if [[ $(readlink -f /dev/fd/$fd) != "${path}.lock" ]]; then
- eval "exec $fd>${path}.lock"
- fi
-
- if ! flock -sn $fd; then
- stat_busy "$msg"
- flock -s $fd
- stat_done
- fi
-}
-
-lock_close() {
- local fd=$1
- eval "exec $fd>&-"
-}
-
clean_pacman() {
msg "Cleaning chroot with pacman: ${copydir}"
cp -a "$(dirname $0)/chcleanup" "${copydir}/clean"
mkdir -p "$copydir/build"
- mkarchroot -r "cd /build; /clean" "${copydir}"
-
- #mkarchroot "${copydir}" base base-devel sudo "${CHROOTEXTRAPKG[@]}"
+ archroot "${copydir}" -r "cd /build; /clean"
}
clean_repo() {
@@ -120,12 +79,12 @@ sync() {
update() {
msg "Updating chroot: ${copydir}"
- mkarchroot -u "${copydir}"
+ archroot "${copydir}" -u
}
enter() {
msg "Entering chroot: ${copydir}"
- mkarchroot -r "bash" "${copydir}"
+ archroot "${copydir}" -r "bash"
}
usage() {
@@ -183,11 +142,11 @@ main() {
fi
# Keep this lock as long as we are running
- # Note that '9' is the same FD number as in mkarchroot
+ # Note that '9' is the same FD number as in (mk)archroot
lock_open_write 9 "$copydir" "Locking chroot copy '$copy'"
if [[ ! -d $rootdir ]]; then
- libremkchroot -d "$CHROOTDIR" "$CHROOT"
+ libremkchroot "$CHROOT"
fi
if [[ ! -d $copydir ]] && [[ $mode != sync ]]; then
diff --git a/src/chroot-tools/libremkchroot b/src/chroot-tools/libremkchroot
index 08f69b1..3072b9e 100755
--- a/src/chroot-tools/libremkchroot
+++ b/src/chroot-tools/libremkchroot
@@ -40,10 +40,10 @@ usage() {
}
main() {
- mkarchroot_args=();
+ archroot_args=();
while getopts 'hfd:C:M:' arg; do
case "$arg" in
- C|M) mkarchroot_args+=("-$arg" "$OPTARG");;
+ C|M) archroot_args+=("-$arg" "$OPTARG");;
h) usage; exit 0;;
*) usage; exit 1;;
@@ -62,7 +62,7 @@ main() {
fi
mkdir -p "${CHROOTDIR}/${CHROOT}"
- mkarchroot "${mkchroot_args[@]}" "${CHROOTDIR}/${CHROOT}/root" base base-devel sudo "${CHROOTEXTRAPKG[@]}"
+ archroot "${chroot_args[@]}" "${CHROOTDIR}/${CHROOT}/root" -i base base-devel sudo "${CHROOTEXTRAPKG[@]}"
}
main "$@"
diff --git a/src/libremessages b/src/libremessages
index ff7476b..ccb5fb4 100755
--- a/src/libremessages
+++ b/src/libremessages
@@ -1,11 +1,11 @@
#!/bin/bash
-# Copyright (c) 2006-2010 Pacman Development Team <pacman-dev@archlinux.org>
# Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
+# Copyright (c) 2006-2010 Pacman Development Team <pacman-dev@archlinux.org>
# Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
-# Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
# Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
# Copyright (c) 2006 by Alex Smith <alex@alex-smith.me.uk>
# Copyright (c) 2006 by Andras Voroskoi <voroskoi@frugalware.org>
+# Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
# Copyright (c) 2011 by Joshua Haase <hahj87@gmail.com>
#
# This program is free software; you can redistribute it and/or modify
@@ -21,70 +21,46 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-# gettext initialization
-export TEXTDOMAIN='libretools'
-export TEXTDOMAINDIR='/usr/share/locale'
+################################################################################
+# Inherit most functions from devtools #
+################################################################################
-# check if messages are to be printed using color
-unset ALL_OFF BOLD BLUE GREEN RED YELLOW
-if [[ -t 2 ]]; then
- # prefer terminal safe colored and bold text when tput is supported
- if tput setaf 0 &>/dev/null; then
- ALL_OFF="$(tput sgr0)"
- BOLD="$(tput bold)"
- PURPLE="${ALL_OFF}$(tput setaf 5)"
- BLUE="${BOLD}$(tput setaf 4)"
- GREEN="${BOLD}$(tput setaf 2)"
- RED="${BOLD}$(tput setaf 1)"
- YELLOW="${BOLD}$(tput setaf 3)"
- else
- ALL_OFF="\e[1;0m"
- BOLD="\e[1;1m"
- BLUE="${BOLD}\e[1;34m"
- GREEN="${BOLD}\e[1;32m"
- RED="${BOLD}\e[1;31m"
- YELLOW="${BOLD}\e[1;33m"
- PURPLE="${BOLD}\033[1;30;40m"
- fi
-fi
-readonly ALL_OFF BOLD BLUE GREEN RED YELLOW PURPLE
+# This is only installed in Parabola's distribution of devtools, not Arch's
+. /usr/share/devtools/common.sh
-stdnull() {
- eval "$@ >/dev/null 2>&1"
-}
+################################################################################
+# gettext initialization #
+################################################################################
-plain() {
- local mesg=$1; shift
- printf "${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
-}
+export TEXTDOMAIN='libretools'
+export TEXTDOMAINDIR='/usr/share/locale'
-msg() {
- local mesg=$1; shift
- printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
-}
+################################################################################
+# Devtools overrides #
+################################################################################
-msg2() {
- local mesg=$1; shift
- printf "${BLUE} ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
-}
+# Override several functions with built-in text to uses gettext
warning() {
- local mesg=$1; shift
- printf "${YELLOW}==> $(gettext "WARNING:")${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
+ local mesg=$1; shift
+ printf "${YELLOW}==> $(gettext "WARNING:")${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
}
error() {
- local mesg=$1; shift
- printf "${RED}==> $(gettext "ERROR:")${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
-}
-
-stat_busy() {
local mesg=$1; shift
- printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}...${ALL_OFF}" >&2
+ printf "${RED}==> $(gettext "ERROR:")${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
}
stat_done() {
- printf "${BOLD}done${ALL_OFF}\n" >&2
+ printf "${BOLD}$(gettext "done")${ALL_OFF}\n" >&2
+}
+
+################################################################################
+# Own functions #
+################################################################################
+
+stdnull() {
+ eval "$@ >/dev/null 2>&1"
}
# Set the terminal title
@@ -97,19 +73,9 @@ term_title() {
printf "$fmt" "$*"
}
-# usage : in_array( $needle, $haystack )
-in_array() {
- [[ $2 ]] || return 1 # Not found
-
- local needle=$1; shift
- local item
-
- for item in "$@"; do
- [[ ${item#@} = $needle ]] && return 0 # Found
- done
-
- return 1 # Not Found
-}
+################################################################################
+# Run one of the defined functions if invoked directly #
+################################################################################
if [[ "${0##*/}" = libremessages ]]; then
_libremessages_cmd=$1