#!/bin/bash # pbuilder -- personal Debian package builder # Copyright (C) 2001,2002,2003,2005-2007 Junichi Uekawa # Copyright (C) 2007 Loïc Minier # # 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 build dependencies; aptitude flavor set -e export PBUILDER_PKGLIBDIR="${PBUILDER_PKGLIBDIR:-$PBUILDER_ROOT/usr/lib/pbuilder}" . "$PBUILDER_PKGLIBDIR"/pbuilder-satisfydepends-funcs function checkbuilddep_internal () { # Use this function to fulfill the dependency (almost) local ARCH=$($CHROOTEXEC dpkg-architecture -qDEB_HOST_ARCH) local BUILD_DEP_DEB_DIR local BUILD_DEP_DEB_CONTROL local DEPENDS local CONFLICTS echo " -> Attempting to satisfy build-dependencies" DEPENDS="$(get_build_deps | filter_arch_deps "$ARCH" | filter_restriction_deps "$DEB_BUILD_PROFILES" )" CONFLICTS="$(get_build_conflicts | filter_arch_deps "$ARCH" | filter_restriction_deps "$DEB_BUILD_PROFILES" )" echo " -> Creating pbuilder-satisfydepends-dummy package" BUILD_DEP_DEB_DIR="/tmp/satisfydepends-aptitude" BUILD_DEP_DEB_CONTROL="$BUILD_DEP_DEB_DIR/pbuilder-satisfydepends-dummy/DEBIAN/control" $CHROOTEXEC mkdir -p "$BUILD_DEP_DEB_DIR/pbuilder-satisfydepends-dummy/DEBIAN/" $CHROOTEXEC sh -c "cat >\"$BUILD_DEP_DEB_CONTROL\"" < Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. EOF if [ -n "$DEPENDS" ]; then $CHROOTEXEC sh -c "echo \"Depends: $DEPENDS\" >>\"$BUILD_DEP_DEB_CONTROL\"" fi if [ -n "$CONFLICTS" ]; then $CHROOTEXEC sh -c "echo \"Conflicts: $CONFLICTS\" >>\"$BUILD_DEP_DEB_CONTROL\"" fi $CHROOTEXEC sh -c "cat \"$BUILD_DEP_DEB_CONTROL\"" $CHROOTEXEC sh -c "dpkg-deb -b \"$BUILD_DEP_DEB_DIR/pbuilder-satisfydepends-dummy\"" $CHROOTEXEC dpkg \ --force-depends \ --force-conflicts \ -i "$BUILD_DEP_DEB_DIR/pbuilder-satisfydepends-dummy.deb" || true $CHROOTEXEC aptitude \ -y \ --without-recommends -o APT::Install-Recommends=false \ "${APTITUDEOPT[@]}" \ -o Aptitude::ProblemResolver::StepScore=100 \ -o "Aptitude::ProblemResolver::Hints::KeepDummy=reject pbuilder-satisfydepends-dummy :UNINST" \ -o Aptitude::ProblemResolver::Keep-All-Level=55000 \ -o Aptitude::ProblemResolver::Remove-Essential-Level=maximum \ install \ pbuilder-satisfydepends-dummy # check whether the aptitude's resolver kept the package if ! $CHROOTEXEC dpkg -l pbuilder-satisfydepends-dummy 2>/dev/null | grep -q ^ii; then echo "Aptitude couldn't satisfy the build dependencies" exit 1 fi echo " -> Finished parsing the build-deps" } function print_help () { # print out help message cat < --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 } . "$PBUILDER_PKGLIBDIR"/pbuilder-satisfydepends-checkparams