From c5b67b75809d6f37030f8c3abd008b5005d95b47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Minier?= Date: Sat, 31 Mar 2007 14:08:56 +0200 Subject: * Initial pbuilder-satisfydepends-aptitude implementation; probably breaks for arch specific build-deps and for pbuilder environments using unsigned APT repositories. --- pbuilder-satisfydepends-aptitude | 147 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100755 pbuilder-satisfydepends-aptitude (limited to 'pbuilder-satisfydepends-aptitude') diff --git a/pbuilder-satisfydepends-aptitude b/pbuilder-satisfydepends-aptitude new file mode 100755 index 0000000..b6353ce --- /dev/null +++ b/pbuilder-satisfydepends-aptitude @@ -0,0 +1,147 @@ +#!/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 + +function checkbuilddep_internal () { +# Use this function to fulfill the dependency (almost) + local ARCH=$(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 $Id$" + DEPENDS="$(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/^[^: ]*://')" + CONFLICTS="$(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/^[^: ]*://')" + 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 and should +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 apt-get -y --force-yes install aptitude + $CHROOTEXEC dpkg -i "$BUILD_DEP_DEB_DIR/pbuilder-satisfydepends-dummy.deb" || true + $CHROOTEXEC aptitude -y install pbuilder-satisfydepends-dummy + 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 +} + + +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 -- cgit v1.2.3