[Pbuilder-maint] pbuilder CVS update: pbuilder ChangeLog Makefile pbuilder-satisfydepends-experimental pbuilderrc pbuilderrc.5

pbuilder CVS Commit pbuilder-maint at lists.alioth.debian.org
Mon Nov 6 21:55:13 CET 2006


  User: lool    
  Date: 06/11/06 21:55:13

  Modified:    .        ChangeLog Makefile pbuilderrc pbuilderrc.5
  Added:       .        pbuilder-satisfydepends-experimental
  Log:
  * pbuilder-satisfydepends-experimental, Makefile: alternate
  implementation of pbuilder-satisfydepends which supports pulling
  build-deps with a version on the apt-get command-line; this is derived
  from pbuilder-satisfydepends with the following changes:
  - Add and use new package_versions() and candidate_version() helpers;
    the former returns all versions of a package available via APT, the
    later APT's candidate version.
  - For versionned build-deps, when building the "apt-get install"
    command, try APT's candidate version or all available versions
    available from APT in ascending order (the reverse order of
    apt-cache's output); checkbuilddep_versiondeps() isn't used for this
    part of the process anymore, but it is still used to honor
    build-conflicts.
  - Recover from APT errors caused by unsufficient dependencies
    ("libfoo-dev Depends: bar but baz is to be installed") and missing
    dependencies libfoo-dev Depends: bar but it is not going to be
    installed", or simply "libfoo-dev Depends: bar"); this permits
    simply listing build-deps when uploading to experimental; achieved
    by moving the version matching logic in the new
    versioneddep_to_aptcmd() helper.
  * pbuilderrc, pbuilderrc.5: document the availability of the alternate
  implementation.
  
  Revision  Changes    Path
  1.420     +23 -1     pbuilder/ChangeLog
  
  CVSWEB Options: -------------------
  
  CVSWeb: Annotate this file:            http://cvs.alioth.debian.org/cgi-bin/cvsweb.cgi/pbuilder/pbuilder/ChangeLog?annotate=1.420&cvsroot=
  
  CVSWeb: View this file:             http://cvs.alioth.debian.org/cgi-bin/cvsweb.cgi/pbuilder/pbuilder/ChangeLog?rev=1.420&content-type=text/x-cvsweb-markup&cvsroot=
  
  CVSWeb: Diff to previous version:   http://cvs.alioth.debian.org/cgi-bin/cvsweb.cgi/pbuilder/pbuilder/ChangeLog.diff?r1=1.420&r2=1.419&cvsroot=
  
  -----------------------------------
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvsroot/pbuilder/pbuilder/ChangeLog,v
  retrieving revision 1.419
  retrieving revision 1.420
  diff -u -r1.419 -r1.420
  --- ChangeLog	6 Nov 2006 20:20:56 -0000	1.419
  +++ ChangeLog	6 Nov 2006 20:55:12 -0000	1.420
  @@ -14,6 +14,28 @@
   	* pdebuild: pass --pbuildersatisfydepends to pdebuild-internal.
   	* pbuilder-modules, pdebuild.1: document --pbuildersatisfydepends.
   	* pbuilder-satisfydepends: drop an useless invocation of awk.
  +	* pbuilder-satisfydepends-experimental, Makefile: alternate
  +	implementation of pbuilder-satisfydepends which supports pulling
  +	build-deps with a version on the apt-get command-line; this is derived
  +	from pbuilder-satisfydepends with the following changes:
  +	- Add and use new package_versions() and candidate_version() helpers;
  +	  the former returns all versions of a package available via APT, the
  +	  later APT's candidate version.
  +	- For versionned build-deps, when building the "apt-get install"
  +	  command, try APT's candidate version or all available versions
  +	  available from APT in ascending order (the reverse order of
  +	  apt-cache's output); checkbuilddep_versiondeps() isn't used for this
  +	  part of the process anymore, but it is still used to honor
  +	  build-conflicts.
  +	- Recover from APT errors caused by unsufficient dependencies
  +	  ("libfoo-dev Depends: bar but baz is to be installed") and missing
  +	  dependencies libfoo-dev Depends: bar but it is not going to be
  +	  installed", or simply "libfoo-dev Depends: bar"); this permits
  +	  simply listing build-deps when uploading to experimental; achieved
  +	  by moving the version matching logic in the new
  +	  versioneddep_to_aptcmd() helper.
  +	* pbuilderrc, pbuilderrc.5: document the availability of the alternate
  +	implementation.
   
   2006-11-03  Loic Minier <lool at dooz.org>
   
  
  
  
  1.43      +2 -0      pbuilder/Makefile
  
  CVSWEB Options: -------------------
  
  CVSWeb: Annotate this file:            http://cvs.alioth.debian.org/cgi-bin/cvsweb.cgi/pbuilder/pbuilder/Makefile?annotate=1.43&cvsroot=
  
  CVSWeb: View this file:             http://cvs.alioth.debian.org/cgi-bin/cvsweb.cgi/pbuilder/pbuilder/Makefile?rev=1.43&content-type=text/x-cvsweb-markup&cvsroot=
  
  CVSWeb: Diff to previous version:   http://cvs.alioth.debian.org/cgi-bin/cvsweb.cgi/pbuilder/pbuilder/Makefile.diff?r1=1.43&r2=1.42&cvsroot=
  
  -----------------------------------
  
  Index: Makefile
  ===================================================================
  RCS file: /cvsroot/pbuilder/pbuilder/Makefile,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- Makefile	29 Jan 2006 21:19:21 -0000	1.42
  +++ Makefile	6 Nov 2006 20:55:12 -0000	1.43
  @@ -15,6 +15,7 @@
   	pbuilder-modules \
   	pbuilder-runhooks \
   	pbuilder-satisfydepends \
  +	pbuilder-satisfydepends-experimental \
   	pbuilder-updatebuildenv \
   	pbuilder-user-mode-linux \
   	pbuilder \
  @@ -70,6 +71,7 @@
   	$(INSTALL_EXECUTABLE) pdebuild-user-mode-linux $(DESTDIR)/usr/bin
   	$(INSTALL_EXECUTABLE) debuild-pbuilder $(DESTDIR)/usr/bin
   	$(INSTALL_EXECUTABLE) pbuilder-satisfydepends $(DESTDIR)/usr/lib/pbuilder/
  +	$(INSTALL_EXECUTABLE) pbuilder-satisfydepends-experimental $(DESTDIR)/usr/lib/pbuilder/
   	$(INSTALL_EXECUTABLE) pdebuild-internal $(DESTDIR)/usr/lib/pbuilder/
   	$(INSTALL_FILE) pbuilderrc $(DESTDIR)/etc
   	$(INSTALL_FILE) pbuilderrc $(DESTDIR)/usr/share/pbuilder
  
  
  
  1.45      +4 -1      pbuilder/pbuilderrc
  
  CVSWEB Options: -------------------
  
  CVSWeb: Annotate this file:            http://cvs.alioth.debian.org/cgi-bin/cvsweb.cgi/pbuilder/pbuilder/pbuilderrc?annotate=1.45&cvsroot=
  
  CVSWeb: View this file:             http://cvs.alioth.debian.org/cgi-bin/cvsweb.cgi/pbuilder/pbuilder/pbuilderrc?rev=1.45&content-type=text/x-cvsweb-markup&cvsroot=
  
  CVSWeb: Diff to previous version:   http://cvs.alioth.debian.org/cgi-bin/cvsweb.cgi/pbuilder/pbuilder/pbuilderrc.diff?r1=1.45&r2=1.44&cvsroot=
  
  -----------------------------------
  
  Index: pbuilderrc
  ===================================================================
  RCS file: /cvsroot/pbuilder/pbuilder/pbuilderrc,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- pbuilderrc	6 Nov 2006 20:06:25 -0000	1.44
  +++ pbuilderrc	6 Nov 2006 20:55:12 -0000	1.45
  @@ -35,7 +35,10 @@
   PBUILDERROOTCMD="sudo"
   
   # command to satisfy build-dependencies; the default is an internal shell
  -# implementation which is relatively slow
  +# implementation which is relatively slow; there's an alternate experimental
  +# implementation, "pbuilder-satisfydepends-experimental", which might be useful
  +# to pull packages from experimental or from repositories with a low APT Pin
  +# Priority
   PBUILDERSATISFYDEPENDSCMD="/usr/lib/pbuilder/pbuilder-satisfydepends"
   
   #default is to build everything. Passed on to dpkg-buildpackage
  
  
  
  1.59      +4 -1      pbuilder/pbuilderrc.5
  
  CVSWEB Options: -------------------
  
  CVSWeb: Annotate this file:            http://cvs.alioth.debian.org/cgi-bin/cvsweb.cgi/pbuilder/pbuilder/pbuilderrc.5?annotate=1.59&cvsroot=
  
  CVSWeb: View this file:             http://cvs.alioth.debian.org/cgi-bin/cvsweb.cgi/pbuilder/pbuilder/pbuilderrc.5?rev=1.59&content-type=text/x-cvsweb-markup&cvsroot=
  
  CVSWeb: Diff to previous version:   http://cvs.alioth.debian.org/cgi-bin/cvsweb.cgi/pbuilder/pbuilder/pbuilderrc.5.diff?r1=1.59&r2=1.58&cvsroot=
  
  -----------------------------------
  
  Index: pbuilderrc.5
  ===================================================================
  RCS file: /cvsroot/pbuilder/pbuilder/pbuilderrc.5,v
  retrieving revision 1.58
  retrieving revision 1.59
  diff -u -r1.58 -r1.59
  --- pbuilderrc.5	6 Nov 2006 20:06:25 -0000	1.58
  +++ pbuilderrc.5	6 Nov 2006 20:55:12 -0000	1.59
  @@ -216,7 +216,10 @@
   .BI "PBUILDERSATISFYDEPENDSCMD=" "/usr/lib/pbuilder/pbuilder-satisfydepends"
   
   This option is used by various parts of pbuilder to satisfy (i.e. install) the
  -build-dependencies of a package.
  +build-dependencies of a package.  There is an alternate experimental
  +implementation, "pbuilder-satisfydepends-experimental", which might be useful
  +to pull packages from experimental or from repositories with a low APT Pin
  +Priority.
   
   .TP
   .BI "BUILDUSERID=" "1234"
  
  
  
  1.1                  pbuilder/pbuilder-satisfydepends-experimental
  
  CVSWEB Options: -------------------
  
  CVSWeb: Annotate this file:            http://cvs.alioth.debian.org/cgi-bin/cvsweb.cgi/pbuilder/pbuilder/pbuilder-satisfydepends-experimental?annotate=1.1&cvsroot=
  
  CVSWeb: View this file:             http://cvs.alioth.debian.org/cgi-bin/cvsweb.cgi/pbuilder/pbuilder/pbuilder-satisfydepends-experimental?rev=1.1&content-type=text/x-cvsweb-markup&cvsroot=
  
  -----------------------------------
  
  Index: pbuilder-satisfydepends-experimental
  ===================================================================
  #!/bin/bash
  #   pbuilder -- personal Debian package builder
  #   Copyright (C) 2001,2002,2003,2005-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
  
  #
  # module to satisfy dependency.
  
  set -e
  
  function package_versions() {
  	local PACKAGE="$1"
  	( $CHROOTEXEC /usr/bin/apt-cache show "$PACKAGE" ) | sed -n 's/^Version: \(.*\)$/\1/p'
  }
  
  function candidate_version() {
  	local PACKAGE="$1"
  	LC_ALL=C $CHROOTEXEC apt-cache policy "$PACKAGE" | sed -n 's/ *Candidate: *\(.*\)/\1/p'
  }
  
  function checkbuilddep_versiondeps () {
      local PACKAGE="$1"
      local COMPARESTRING="$2"
      local DEPSVERSION="$3"
      local PACKAGEVERSIONS=$( package_versions "$PACKAGE" | xargs)
      # no versioned provides.
      if [ "${FORCEVERSION}" = "yes" ]; then
  	return 0;
      fi
      for PACKAGEVERSION in $PACKAGEVERSIONS ; do
        if dpkg --compare-versions "$PACKAGEVERSION" "$COMPARESTRING" "$DEPSVERSION"; then
  	# satisfies depends
  	return 0;
        fi
      done
      echo "      Tried versions: $PACKAGEVERSIONS"
      # cannot satisfy depends
      return 1;
  }
  
  function expand_arch () {
      local ARCH="$1"
      local EXPANDED_ARCH
      
      # just keep the original behavior.
      echo "$ARCH"
      return
  
      # the following may be used if dpkg change is set to stone.
      if echo "$ARCH" | grep "-" > /dev/null; then
          EXPANDED_ARCH=$ARCH
      else
          EXPANDED_ARCH="linux-$ARCH"
      fi
      local WC1=$(echo $EXPANDED_ARCH | sed 's/^[^-]*/any/')
      local WC2=$(echo $EXPANDED_ARCH | sed 's/[^-]*$/any/')
      echo "$ARCH\\|$EXPANDED_ARCH\\|$WC1\\|$WC2"
  }
  
  function checkbuilddep_archdeps () {
      # returns FALSE on INSTALL
      local INSTALLPKG="$1"
      local ARCH="$2"
      if echo "$INSTALLPKG" | sed 's/.*\(\[.*\]\)/\1/' | grep "[[/][!]\($(expand_arch $ARCH)\)[]/]" > /dev/null; then
  	# if !$ARCH exists in there, ERROR.
  	return 0;
      fi
      if ! echo "$INSTALLPKG" | sed 's/.*\(\[.*\]\)/\1/' | grep "[!]" > /dev/null; then
  	if ! echo "$INSTALLPKG" | sed 's/.*\(\[.*\]\)/\1/' | grep "[[/]\($(expand_arch $ARCH)\)[]/]" > /dev/null; then
  	# if $ARCH does not exist, ERROR.
  	    return 0;
  	fi
      fi
      return 1;
  }
  
  function checkbuilddep_provides () {
      local PACKAGENAME="$1"
      # PROVIDED needs to be used outside of this function.
      PROVIDED=$($CHROOTEXEC /usr/bin/apt-cache showpkg $PACKAGENAME | awk '{p=0}/^Reverse Provides:/,/^$/{p=1}{if(p && ($0 !~ "Reverse Provides:")){PACKAGE=$1}} END{print PACKAGE}')
  }
  
  # returns either "package=version", to append to an apt-get install line, or
  # package
  function versioneddep_to_aptcmd () {
  	local INSTALLPKG="$1"
  
  	local PACKAGE
  	local PACKAGE_WITHVERSION
  	local PACKAGEVERSIONS
  	local CANDIDATE_VERSION
  	local COMPARESTRING
  	local DEPSVERSION
  
  	PACKAGE="$(echo "$INSTALLPKG" | sed -e 's/^[/]*//' -e 's/[[/(].*//')"
  	PACKAGE_WITHVERSION="$PACKAGE"
  
  	# if not versionned, we skip directly to outputting $PACKAGE
  	if echo "$INSTALLPKG" | grep '[(]' > /dev/null; then
  	    # package versions returned by APT, in reversed order
  	    PACKAGEVERSIONS="$( package_versions "$PACKAGE" | tac | xargs )"
  	    CANDIDATE_VERSION="$( candidate_version "$PACKAGE" )"
  
  	    # try the candidate version, then all available versions (asc)
  	    for VERSION in $CANDIDATE_VERSION $PACKAGEVERSIONS; do
  		COMPARESTRING=$(echo "$INSTALLPKG" | tr "/" " " | sed 's/^.*([ ]*\(<<\|<=\|>=\|=\|<\|>>\|>\)[ ]*\(.*\)).*$/\1/')
  		DEPSVERSION="$(echo "$INSTALLPKG" | tr "/" " " | sed 's/^.*([ ]*\(<<\|<=\|>=\|=\|<\|>>\|>\)[ ]*\(.*\)).*$/\2/')"
  		if dpkg --compare-versions "$VERSION" "$COMPARESTRING" "$DEPSVERSION"; then
  		    if [ $VERSION != $CANDIDATE_VERSION ]; then
  			PACKAGE_WITHVERSION="$PACKAGE=$VERSION"
  		    fi
  		    break;
  		fi
  	    done
  	fi
  
  	echo "$PACKAGE_WITHVERSION"
  }
  
  function checkbuilddep_internal () {
  # Use this function to fulfill the dependency (almost)
  
      local ARCH=$(dpkg-architecture -qDEB_HOST_ARCH)
      local INSTALLPKG
      local INSTALLPKGLIST
      local INSTALLPKGMULTI
      local CURRENTREALPKGNAME
      local SATISFIED
      local PACKAGEVERSIONS
      local CANDIDATE_VERSION
      echo " -> Attempting to parse the build-deps $Id: pbuilder-satisfydepends-experimental,v 1.1 2006/11/06 20:55:12 lool Exp $"
      for INSTALLPKGMULTI in $(cat ${DEBIAN_CONTROL} | \
  	awk '
  BEGIN{source=1} 
  /^$/      {source=0} 
  /^Source:/      {source=1} 
  /^[^ ]*:/ {p=0} 
  tolower($0) ~ /^'"${BD_REGEXP}"':/   {p=1} 
  {if(p && source) {print $0}}'  | \
  	sed 's/^[^: ]*://' | \
  	tr " " "/" | \
  	awk 'BEGIN{RS=","} {print}'); do
        echo " -> Considering build-dep$(echo "$INSTALLPKGMULTI" | tr "/" " " )"
        SATISFIED="no"
        for INSTALLPKG in $(echo "$INSTALLPKGMULTI" | \
  	  awk 'BEGIN{RS="|"} {print}'); do
  	CURRENTREALPKGNAME=$(echo "$INSTALLPKG" | sed -e 's/^[/]*//' -e 's/[[/(].*//')
  	if echo "$INSTALLPKG" | grep '\[' > /dev/null ; then
  	    if checkbuilddep_archdeps "$INSTALLPKG" "$ARCH"; then
  		SATISFIED="yes"
  		echo "   -> This package is not for this architecture"
  		continue;
  	    fi
  	fi
  
  	CURRENT_APT_COMMAND="$(versioneddep_to_aptcmd "$INSTALLPKG")"
  
  	while [ "$SATISFIED" = "no" ]; do
  	    echo "   -> Trying to add ${CURRENT_APT_COMMAND}"
  	    if APT_OUTPUT="$( exec 2>&1; LC_ALL=C $CHROOTEXEC /usr/bin/apt-get -s install ${INSTALLPKGLIST} ${CURRENT_APT_COMMAND} )"; then
  		# success, we're done
  		SATISFIED="yes"
  		INSTALLPKGLIST="${INSTALLPKGLIST} ${CURRENT_APT_COMMAND}"
  		break
  	    fi
  	    # try to parse APT's output to recognize lines such as:
  	    #   libfoo-dev: Depends: bar (>= xyz) but www is to be installed
  	    DEP_INSTALLPKG="$(echo "$APT_OUTPUT" | \
  		sed -n \
  		    -e "s/^ *.*: *Depends: *\(.*\) but.*is to be installed\$/\\1/p" \
  		    -e "s/^ *.*: *Depends: *\(.*\) but it is not going to be installed\$/\\1/p" \
  		    -e "s/^ *.*: *Depends: *\(.*\)\$/\\1/p" | \
  		head -1 | \
  		tr " " "/")"
  	    APT_ADD_COMMAND="$(versioneddep_to_aptcmd "$DEP_INSTALLPKG")"
  	    if echo "$CURRENT_APT_COMMAND" | grep -q "$APT_ADD_COMMAND"; then
  		# loop detected, give up with real packages
  		echo "   -> Loop detected, last APT error was: ======"
  		echo "$APT_OUTPUT"
  		echo "   -> ========================================="
  		echo "   -> (not adding $APT_ADD_COMMAND to $CURRENT_APT_COMMAND)"
  		break
  	    fi
  	    CURRENT_APT_COMMAND="$CURRENT_APT_COMMAND $APT_ADD_COMMAND"
  	done
  	if [ "$SATISFIED" = "yes" ]; then
  	    break;
  	fi
  
  	echo "       -> Cannot install ${CURRENT_APT_COMMAND}; apt errors follow:"
  	if $CHROOTEXEC /usr/bin/apt-get -s install ${INSTALLPKGLIST} "${CURRENT_APT_COMMAND}"; then
  	    :
  	fi
  	# package could not be found. -- looking for alternative.
  	PROVIDED=""
  	checkbuilddep_provides "${CURRENTREALPKGNAME}"
  	if [ -n "$PROVIDED" ]; then
  	    # something provides this package
  	    echo "     -> Considering $PROVIDED to satisfy the dependency "
  	    if $CHROOTEXEC /usr/bin/apt-get -s install ${INSTALLPKGLIST} ${PROVIDED} >& /dev/null; then
  		SATISFIED="yes";
  		INSTALLPKGLIST="${INSTALLPKGLIST} ${PROVIDED}"
  	    else
  		# show the error for diagnostic purposes
  		echo "       -> Cannot install $PROVIDED; apt errors follow:"
  		if $CHROOTEXEC /usr/bin/apt-get -s install ${INSTALLPKGLIST} ${PROVIDED}; then
  		    :
  		fi
  	    fi
  	fi
  	if [ "$SATISFIED" = "yes" ]; then
  	    break;
  	fi
        done;
        if [ "$SATISFIED" = "no" ]; then
  	  echo "E: Could not satisfy build-dependency." >&2
  	  if [ "$CONTINUE_FAIL" != "yes" ]; then
  	      exit 2
  	  fi
        fi
      done;
      
      # now actually install the packages
      echo " -> Installing ${INSTALLPKGLIST}"
      if ! $CHROOTEXEC apt-get -y --force-yes install ${INSTALLPKGLIST}; then
  	echo " -> Trying to fix apt error"
  	# Work around an apt bug which causes configure to fail.
  	if $CHROOTEXEC dpkg --configure --pending && $CHROOTEXEC apt-get -y --force-yes install ${INSTALLPKGLIST}; then
  	    echo " -> Apt bug workaround succeeded"
  	elif [ "$CONTINUE_FAIL" != "yes" ]; then
  	    echo "E: Unrecoverable error installing build-dependencies." >&2
  	    exit 1
  	fi
      fi
  
      # start processing build-conflicts.
      for INSTALLPKG in $(cat "${DEBIAN_CONTROL}" | \
  	awk 'BEGIN{source=1} 
  /^$/      {source=0} 
  /^Source:/      {source=1} 
  /^[^ ]*:/{p=0} 
  tolower($0) ~ /^'"${BC_REGEXP}"':/   {p=1} 
  {if(p && source) {print $0}}'  | \
  	sed 's/^[^: ]*://' | \
  	tr " " "/" | \
  	awk 'BEGIN{RS=","} {print}'); do
        CURRENTREALPKGNAME=$(echo "$INSTALLPKG" | sed -e 's/^[/]*//' -e 's/[[/(].*//')
        echo " -> Considering ${CURRENTREALPKGNAME}"
        
        if echo "$INSTALLPKG" | grep '\[' > /dev/null ; then
  	  # this package has arch-conflicts.
  	  if checkbuilddep_archdeps "$INSTALLPKG" "$ARCH"; then
  	      echo "I: Ignoring other-arch"
  	      continue;
  	  fi
        fi
        if echo "$INSTALLPKG" | grep '[(]' > /dev/null ; then
  	  # this package has version-conflicts
  	  if ! checkbuilddep_versiondeps ${CURRENTREALPKGNAME} \
  		$(echo "$INSTALLPKG" | tr "/" " " | sed 's/^.*([ ]*\(<<\|<=\|>=\|=\|<\|>>\|>\)[ ]*\(.*\)).*$/\1/') \
  		$(echo "$INSTALLPKG" | tr "/" " " | sed 's/^.*([ ]*\(<<\|<=\|>=\|=\|<\|>>\|>\)[ ]*\(.*\)).*$/\2/'); then
  	      echo "I: Satisfies version, not trying"
  	      continue;
  	  fi
        fi
  
        # if package exists, remove it.
        if $CHROOTEXEC /usr/bin/dpkg -s $(echo "$INSTALLPKG" | tr "/" " " | awk '{print $1}') 2>&1 | grep ^Package: > /dev/null; then
  	  if ! $CHROOTEXEC /usr/bin/apt-get -y remove ${CURRENTREALPKGNAME} ; then
  	      echo "E: Could not satisfy build-conflicts" >&2
  	      exit 1
  	  fi
        else
  	  echo "I: ${CURRENTREALPKGNAME} package is not installed, no need to remove"
        fi
      done
      echo " -> Finished parsing the build-deps"
  }
  
  
  function print_help () {
      # print out help message
      cat <<EOF
  pbuilder-satisfydepends -- satisfy dependencies
  Copyright 2002-2006  Junichi Uekawa <dancer at debian.org>
  
  --help:        give help
  --control:     specify control file (debian/control, *.dsc)
  --chroot:      operate inside chroot
  --binary-all:  include binary-all
  --binary-arch: include binary-arch only
  --echo:        echo mode, do nothing. (--force-version required for most operation)
  --force-version: skip version check.
  --continue-fail: continue even when failed.
  
  EOF
  }
  
  
  DEBIAN_CONTROL=debian/control
  CHROOTEXEC=""
  BD_REGEXP="build-(depends|depends-indep)"
  BC_REGEXP="build-(conflicts|conflicts-indep)"
  FORCEVERSION=""
  CONTINUE_FAIL="no"
  
  
  while [ -n "$1" ]; do
      case "$1" in
  	--control|-c)
  	    DEBIAN_CONTROL="$2"
  	    shift; shift
  	    ;;
  	--chroot)
  	    CHROOTEXEC="chroot $2 "
  	    shift; shift
  	    ;;
  	--internal-chrootexec)
  	    CHROOTEXEC="$2"
  	    shift; shift 
  	    ;;
  	--binary-all)
  	    BD_REGEXP='build-(depends|depends-indep)'
  	    BC_REGEXP='build-(conflicts|conflicts-indep)'
  	    shift
  	    ;;
  	--binary-arch)
  	    BD_REGEXP='build-depends'
  	    BC_REGEXP='build-conflicts'
  	    shift
  	    ;;
  	--echo)
  	    CHROOTEXEC="echo $CHROOTEXEC"
  	    shift
  	    ;;
  	--continue-fail)
  	    CONTINUE_FAIL="yes"
  	    shift
  	    ;;
  	--force-version)
  	    FORCEVERSION="yes"
  	    shift;
  	    ;;
  	--help|-h|*)
  	    print_help
  	    exit 1
  	    ;;
      esac
  done
  
  
  checkbuilddep_internal
  
  
  



More information about the Pbuilder-maint mailing list