SPECS: builder - separate deps install via rpm-getdeps or rpm --sp...
glen
glen at pld-linux.org
Sat Apr 12 19:10:47 CEST 2008
Author: glen Date: Sat Apr 12 17:10:47 2008 GMT
Module: SPECS Tag: HEAD
---- Log message:
- separate deps install via rpm-getdeps or rpm --specsrpm to own function
---- Files affected:
SPECS:
builder (1.549 -> 1.550)
---- Diffs:
================================================================
Index: SPECS/builder
diff -u SPECS/builder:1.549 SPECS/builder:1.550
--- SPECS/builder:1.549 Sat Apr 12 19:05:37 2008
+++ SPECS/builder Sat Apr 12 19:10:42 2008
@@ -1732,52 +1732,61 @@
rpm -q --whatprovides $DEPS 2>/dev/null | awk '!/no package provides/ { print }'
}
+# install deps via information from 'rpm-getdeps' or 'rpm --specsrpm'
+install_build_requires_rpmdeps() {
+ if [ "$FETCH_BUILD_REQUIRES_RPMGETDEPS" = "yes" ]; then
+ # TODO: Conflicts list doesn't check versions
+ local CNFL=$(rpm-getdeps $BCOND $SPECFILE 2> /dev/null | awk '/^\-/ { print $3 } ' | _rpm_cnfl_check | xargs)
+ local DEPS=$(rpm-getdeps $BCOND $SPECFILE 2> /dev/null | awk '/^\+/ { print $3 } ' | _rpm_prov_check | xargs)
+ fi
+ if [ "$FETCH_BUILD_REQUIRES_RPMSPECSRPM" = "yes" ]; then
+ local CNFL=$(rpm -q --specsrpm --conflicts $BCOND $SPECFILE | awk '{print $1}' | _rpm_cnfl_check | xargs)
+ local DEPS=$(rpm -q --specsrpm --requires $BCOND $SPECFILE | awk '{print $1}' | _rpm_prov_check | xargs)
+ fi
+
+ if [ -n "$CNFL" ] || [ -n "$DEPS" ]; then
+ echo "fetch BuildRequires: install [$DEPS]; remove [$CNFL]"
+ update_shell_title "poldek: install [$DEPS]; remove [$CNFL]"
+ $SU_SUDO /usr/bin/poldek -q --update || $SU_SUDO /usr/bin/poldek -q --upa
+ fi
+ if [ -n "$CNFL" ]; then
+ update_shell_title "uninstall conflicting packages: $CNFL"
+ echo "Trying to uninstall conflicting packages ($CNFL):"
+ $SU_SUDO /usr/bin/poldek --noask --nofollow -ev $CNFL
+ fi
+
+ while [ "$DEPS" ]; do
+ update_shell_title "install deps: $DEPS"
+ echo "Trying to install dependencies ($DEPS):"
+ local log=.${SPECFILE}_poldek.log
+ $SU_SUDO /usr/bin/poldek --caplookup -uGqQ $DEPS | tee $log
+ failed=$(awk '/^error:/{a=$2; sub(/^error: /, "", a); sub(/:$/, "", a); print a}' $log)
+ rm -f $log
+ local ok
+ if [ -n "$failed" ]; then
+ for package in $failed; do
+ spawn_sub_builder -bb $(depspecname $package) && ok="$ok $package"
+ done
+ DEPS="$ok"
+ else
+ DEPS=""
+ fi
+ done
+}
+
fetch_build_requires()
{
- if [ "${FETCH_BUILD_REQUIRES}" = "yes" ]; then
- update_shell_title "fetch build requires"
- if [ "$FETCH_BUILD_REQUIRES_RPMGETDEPS" = "yes" ] || [ "$FETCH_BUILD_REQUIRES_RPMSPECSRPM" = "yes" ]; then
- if [ "$FETCH_BUILD_REQUIRES_RPMGETDEPS" = "yes" ]; then
- # TODO: Conflicts list doesn't check versions
- local CNFL=$(rpm-getdeps $BCOND $SPECFILE 2> /dev/null | awk '/^\-/ { print $3 } ' | _rpm_cnfl_check | xargs)
- local DEPS=$(rpm-getdeps $BCOND $SPECFILE 2> /dev/null | awk '/^\+/ { print $3 } ' | _rpm_prov_check | xargs)
- fi
- if [ "$FETCH_BUILD_REQUIRES_RPMSPECSRPM" = "yes" ]; then
- local CNFL=$(rpm -q --specsrpm --conflicts $BCOND $SPECFILE | awk '{print $1}' | _rpm_cnfl_check | xargs)
- local DEPS=$(rpm -q --specsrpm --requires $BCOND $SPECFILE | awk '{print $1}' | _rpm_prov_check | xargs)
- fi
-
- if [ -n "$CNFL" ] || [ -n "$DEPS" ]; then
- echo "fetch BuildRequires: install [$DEPS]; remove [$CNFL]"
- update_shell_title "poldek: install [$DEPS]; remove [$CNFL]"
- $SU_SUDO /usr/bin/poldek -q --update || $SU_SUDO /usr/bin/poldek -q --upa
- fi
- if [ -n "$CNFL" ]; then
- update_shell_title "uninstall conflicting packages: $CNFL"
- echo "Trying to uninstall conflicting packages ($CNFL):"
- $SU_SUDO /usr/bin/poldek --noask --nofollow -ev $CNFL
- fi
-
- while [ "$DEPS" ]; do
- update_shell_title "install deps: $DEPS"
- echo "Trying to install dependencies ($DEPS):"
- local log=.${SPECFILE}_poldek.log
- $SU_SUDO /usr/bin/poldek --caplookup -uGqQ $DEPS | tee $log
- failed=$(awk '/^error:/{a=$2; sub(/^error: /, "", a); sub(/:$/, "", a); print a}' $log)
- rm -f $log
- local ok
- if [ -n "$failed" ]; then
- for package in $failed; do
- spawn_sub_builder -bb $(depspecname $package) && ok="$ok $package"
- done
- DEPS="$ok"
- else
- DEPS=""
- fi
- done
- return
- fi
+ if [ "${FETCH_BUILD_REQUIRES}" != "yes" ]; then
+ return
+ fi
+ update_shell_title "fetch build requires"
+ if [ "$FETCH_BUILD_REQUIRES_RPMGETDEPS" = "yes" ] || [ "$FETCH_BUILD_REQUIRES_RPMSPECSRPM" = "yes" ]; then
+ install_build_requires_rpmdeps
+ return
+ fi
+
+ # XXX is this ugliest code written in human history still needed?
echo -ne "\nAll packages installed by fetch_build_requires() are written to:\n"
echo -ne "`pwd`/.${SPECFILE}_INSTALLED_PACKAGES\n"
echo -ne "\nIf anything fails, you may get rid of them by executing:\n"
@@ -1918,7 +1927,6 @@
remove_build_requires
exit 8
fi
- fi
}
init_rpm_dir() {
================================================================
---- CVS-web:
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SPECS/builder?r1=1.549&r2=1.550&f=u
More information about the pld-cvs-commit
mailing list