diff options
Diffstat (limited to 'examples/lvmpbuilder/lib/lvmbuilder-checkparams')
-rwxr-xr-x | examples/lvmpbuilder/lib/lvmbuilder-checkparams | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/examples/lvmpbuilder/lib/lvmbuilder-checkparams b/examples/lvmpbuilder/lib/lvmbuilder-checkparams new file mode 100755 index 0000000..e43cb11 --- /dev/null +++ b/examples/lvmpbuilder/lib/lvmbuilder-checkparams @@ -0,0 +1,146 @@ +#! /bin/bash +# this is sourced from lvmbuilder to process the optional parameters. +# lvmbuilder -- Debian package builder using LVM +# Copyright (C) 2007 Kapil Hari Paranjape +# based on: +# pbuilder -- personal Debian package builder +# Copyright (C) 2001-2006 Junichi Uekawa +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +# We check all the parameters that are relevant to us +# and add the rest to the pbuilder command line to +# be used to call pbuilder +. /usr/lib/pbuilder/pbuilder-loadconfig +. $LVMBLIB/lvmbuilder-unimplemented + + +# Storage for the command line +declare -a PBCMDLINE + +# The devices +TOTALNAME=lvmbuilder-total +TOTALDEV=/dev/mapper/$TOTALNAME +WORKNAME=lvmbuilder-work +WORKDEV=/dev/mapper/$WORKNAME + +while [ -n "$1" ]; do + case "$1" in +# First the meaningful options + --basedev) + BASEDEV="$2"; + shift; shift; + ;; + --cowdev) + COWDEV="$2"; + shift; shift; + ;; + --buildplace) + BUILDPLACE="$2"; + shift; shift; + ;; + --debug) + PBCMDLINE+=("--debug"); + set -x; + shift; + ;; + --configfile) + if [ ! -f "$2" ]; then + echo "E: Config file $2 does not exist" >&2 + exit 1 + fi + . "$2"; + PBCMDLINE+=("--configfile" "$2"); + shift; shift; + ;; +# We also grab those options that are likely to be meaningless with +# lvmbuilder + --basetgz) + BASETGZ="$2"; + warn_option $1; + shift; shift; + ;; + --hookdir) + HOOKDIR="$2"; + warn_option $1; + shift; shift; + ;; + --preserve-buildplace) + PRESERVE_BUILDPLACE="yes" + warn_option $1; + shift; + ;; + --bindmounts) + BINDMOUNTS="${BINDMOUNTS} $2" + warn_option $1; + shift; shift; + ;; + --save-after-login|--save-after-exec) + SAVE_AFTER_LOGIN=yes; + warn_option $1; + shift; + ;; + --internal-chrootexec) + CHROOTEXEC="$2" + warn_option $1; + shift; shift; + ;; + --internal-build-uml) + INTERNAL_BUILD_UML="yes" + IGNORE_UMOUNT="no" + warn_option $1; + shift; + ;; + --|*.dsc) + break; + ;; + *) + PBCMDLINE+=("$1"); + shift; + ;; + esac +done + +# Add a no-targz option at the end of the cmdline to override +# any conflicting options set by the user +PBCMDLINE+=("--no-targz"); + +# These variables must be defined properly in order for us to proceed! +BUILDPLACE=${BUILDPLACE:?"E: Build root directory is not defined"} +if [ ! -d "$BUILDPLACE" ] ; then + echo "E: Directory $2 does not exist" >&2 + exit 1 +else + BUILDPLACE=$(readlink -f "$BUILDPLACE") + PBCMDLINE+=("--buildplace" "$BUILDPLACE") +fi +BASEDEV=${BASEDEV:?"E: Base device is not defined"} +if [ ! -b "$BASEDEV" ] ; then + echo "E: Base device is not a block device" >&2 + exit 1 +else + BASEDEV=$(readlink -f "$BASEDEV") +fi +COWDEV=${COWDEV:?"E: Cow device is not defined"} +if [ ! -b "$COWDEV" ]; then + echo "E: Cow device is not a block device" >&2 + exit 1 +else + COWDEV=$(readlink -f "$COWDEV") +fi + +PBCMDLINE+=("$@") + |