aboutsummaryrefslogtreecommitdiff
path: root/pbuilder-buildpackage
diff options
context:
space:
mode:
authordancer <dancer>2002-03-12 16:27:48 +0000
committerdancer <dancer>2002-03-12 16:27:48 +0000
commitafb79b8c279baa57e1c2e9409acf0d0ddb017d7c (patch)
tree431b9e0a86db1da7b98aaac4e4d2528f2b5f32d9 /pbuilder-buildpackage
parent8312841f1ca8c1bba4cf01c108c13cf90714afeb (diff)
downloadpbuilder-afb79b8c279baa57e1c2e9409acf0d0ddb017d7c.tar
pbuilder-afb79b8c279baa57e1c2e9409acf0d0ddb017d7c.tar.gz
created pbuilder-satisfydepends, and many changes today.
Improvement generally.
Diffstat (limited to 'pbuilder-buildpackage')
-rwxr-xr-xpbuilder-buildpackage142
1 files changed, 4 insertions, 138 deletions
diff --git a/pbuilder-buildpackage b/pbuilder-buildpackage
index bacd86a..6ad6d9c 100755
--- a/pbuilder-buildpackage
+++ b/pbuilder-buildpackage
@@ -32,147 +32,13 @@ function copydsc () {
done
}
-function checkbuilddep_versiondeps () {
- local PACKAGE="$1"
- local COMPARESTRING="$2"
- local DEPSVERSION="$3"
- local PACKAGEVERSION=$($CHROOTEXEC usr/bin/apt-cache show $PACKAGE | grep "^Version:" | sort -rn | head -1 | sed 's/^Version: \(.*\)$/\1/')
- # no versioned provides.
- if dpkg --compare-versions "$PACKAGEVERSION" "$COMPARESTRING" "$DEPSVERSION"; then
- # satisfies depends
- return 0;
- else
- # cannot satisfy depends
- return 1;
- fi
-}
-
-function checkbuilddep_archdeps () {
- # returns FALSE on INSTALL
- local INSTALLPKG="$1"
- local ARCH="$2"
- if echo "$INSTALLPKG" | sed 's/.*\(\[.*\]\)/\1/' | grep "[[/][!]$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 "[[/]$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}')
-}
-
-function checkbuilddep_internal () {
-# Use this function to fulfill the dependency (almost)
- local ARCH=$(dpkg --print-architecture)
- local INSTALLPKG
- local INSTALLPKGMULTI
- local CURRENTREALPKGNAME
- echo " -> Attempting to parse the build-deps by myself"
- for INSTALLPKGMULTI in $(cat "$BUILDPLACE/"tmp/buildd/*/debian/control | \
- awk '/^[^ ]*:/{p=0} tolower($0) ~ /^build-depends:/{p=1} tolower($0) ~ /^build-depends-indep:/{p=1} {if(p) {print $0}}' | \
- sed 's/^[^:]*: //' | \
- tr " " "/" | \
- awk 'BEGIN{RS=","} {print}'); do
- echo " -> Considering "$(echo $INSTALLPKGMULTI | tr "/" " " | awk '{print $0}' )
- 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
- if echo "$INSTALLPKG" | grep '[(]' > /dev/null; then
- #echo "Debug: $INSTALLPKG"
- if ! checkbuilddep_versiondeps ${CURRENTREALPKGNAME} \
- $(echo "$INSTALLPKG" | tr "/" " " | sed 's/^.*([ ]*\(<<\|<=\|>=\|=\|<\|>>\|>\)[ ]*\(.*\)).*$/\1/') \
- $(echo "$INSTALLPKG" | tr "/" " " | sed 's/^.*([ ]*\(<<\|<=\|>=\|=\|<\|>>\|>\)[ ]*\(.*\)).*$/\2/') ; then
- echo " -> Does not satisfy version, not trying"
- continue;
- fi
- fi
- echo " -> Installing "${CURRENTREALPKGNAME}
-
- if $CHROOTEXEC usr/bin/apt-get -y install ${CURRENTREALPKGNAME}; then
- SATISFIED="yes"
- else
- # package could not be found. -- looking for alternative.
- PROVIDED=""
- checkbuilddep_provides ${CURRENTREALPKGNAME}
- if [ -n "$PROVIDED" ]; then
- # something provides this package
- echo " -> Installing $PROVIDED to satisfy the dependency "
- if $CHROOTEXEC usr/bin/apt-get -y install $PROVIDED; then
- SATISFIED="yes";
- fi
- fi
- fi
- if [ "$SATISFIED" = "yes" ]; then
- break;
- fi
- done;
- if [ "$SATISFIED" = "no" ]; then
- echo "E: pbuilder: Could not satisfy build-dependency." >&2
- saveaptcache_umountproc_cleanbuildplace
- exit 1
- fi
- done;
-
- # start processing build-conflicts.
- for INSTALLPKG in $(cat "$BUILDPLACE/"tmp/buildd/*/debian/control | \
- awk '/^[^ ]*:/{p=0} tolower($0) ~ /^build-conflicts:/{p=1} tolower($0) ~ /^build-conflicts-indep:/{p=1} {if(p) {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
- saveaptcache_umountproc_cleanbuildplace
- exit 1
- fi
- else
- echo "I: This package is not installed."
- fi
- done
-}
-
function checkbuilddep () {
+ /usr/lib/pbuilder/pbuilder-satisfydepends --control "$BUILDPLACE/"tmp/buildd/*/debian/control --chroot "$BUILDPLACE"
checkbuilddep_internal
# install extra packages to the chroot
- $CHROOTEXEC usr/bin/apt-get -y install ${EXTRAPACKAGES}
+ if [ -n "$EXTRAPACKAGES" ]; then
+ $CHROOTEXEC usr/bin/apt-get -y install ${EXTRAPACKAGES}
+ fi
}
function echobacktime () {