autoport: retry installation of install failed packages and other fixes made during x86_64 port
This commit is contained in:
parent
51cfaaf799
commit
816faaef82
78
autoport
78
autoport
@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# autoport -- batch cross-build tool based on autodist
|
# autoport -- batch cross-build tool based on autodist
|
||||||
# Copyright (C) 2011 by Silvan Calarco <silvan.calarco@mambasoft.it>
|
# Copyright (C) 2011-2012 by Silvan Calarco <silvan.calarco@mambasoft.it>
|
||||||
#
|
#
|
||||||
# Released under the terms of the GNU GPL release 3 license
|
# Released under the terms of the GNU GPL release 3 license
|
||||||
#
|
#
|
||||||
@ -16,7 +16,7 @@ me=(${0##*/} $VERSION "Sat Mar 20 2011")
|
|||||||
function usage() {
|
function usage() {
|
||||||
echo "\
|
echo "\
|
||||||
${me[0]} ${me[1]}
|
${me[0]} ${me[1]}
|
||||||
"$"Copyright (C) 2010 Silvan Calarco <silvan.calarco@mambasoft.it>""
|
"$"Copyright (C) 2011-2012 Silvan Calarco <silvan.calarco@mambasoft.it>""
|
||||||
"$"Released under the terms of the GNU GPL v3 license"
|
"$"Released under the terms of the GNU GPL v3 license"
|
||||||
echo "
|
echo "
|
||||||
"$"Batch port and cross-build tool based on autodist.""
|
"$"Batch port and cross-build tool based on autodist.""
|
||||||
@ -121,6 +121,13 @@ JOB_FAILED=(${JOB_FAILED[*]})
|
|||||||
_EOF
|
_EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function find_source_by_provide() {
|
||||||
|
local pkg=`echo $2 | sed "s|(|\\\\\[|g;s|)|\\\\\]|g;s|:|_|g"`
|
||||||
|
grep "^$pkg:" $DATADIR/$1/sources-$BASE_ARCH | \
|
||||||
|
awk '{ $1=""; print $0 }' | \
|
||||||
|
sed "s|[[:space:]]_| |g"
|
||||||
|
}
|
||||||
|
|
||||||
function find_requirements() {
|
function find_requirements() {
|
||||||
[ "$1" ] || return 1
|
[ "$1" ] || return 1
|
||||||
local tf=`mktemp` || {
|
local tf=`mktemp` || {
|
||||||
@ -142,9 +149,9 @@ function find_requirements() {
|
|||||||
echo -n " | missing requirements: "
|
echo -n " | missing requirements: "
|
||||||
> $tf
|
> $tf
|
||||||
cat $tf1 | while read line; do
|
cat $tf1 | while read line; do
|
||||||
REQ=`grep "^$line:" $DATADIR/$PORT_REPOSITORY/sources-$BASE_ARCH | awk '{ print $2 }'`
|
REQ=`find_source_by_provide $PORT_REPOSITORY $line`
|
||||||
[ "$REQ" ] && \
|
[ "$REQ" ] && \
|
||||||
echo "${REQ/_}" >> $tf || \
|
echo "${REQ}" >> $tf || \
|
||||||
echo -n "$line(unresolved) "
|
echo -n "$line(unresolved) "
|
||||||
done
|
done
|
||||||
> $tf1
|
> $tf1
|
||||||
@ -335,6 +342,7 @@ for TARGET_ARCH in ${TARGET_ARCHS}; do
|
|||||||
JOB_MAYBEINSTALLED_NEW=()
|
JOB_MAYBEINSTALLED_NEW=()
|
||||||
JOB_FAILED_OLD=(${JOB_FAILED[*]})
|
JOB_FAILED_OLD=(${JOB_FAILED[*]})
|
||||||
JOB_FAILED=()
|
JOB_FAILED=()
|
||||||
|
JOB_CANTINSTALL_OLD=(${JOB_CANTINSTALL[*]})
|
||||||
for JOB_NUM in `seq 1 ${#JOB[*]}`; do
|
for JOB_NUM in `seq 1 ${#JOB[*]}`; do
|
||||||
JOB_CURRENT=${JOB[$JOB_NUM-1]}
|
JOB_CURRENT=${JOB[$JOB_NUM-1]}
|
||||||
if [ "`grep "^${JOB_CURRENT}$" /etc/autodist/unstage 2>/dev/null`" -o \
|
if [ "`grep "^${JOB_CURRENT}$" /etc/autodist/unstage 2>/dev/null`" -o \
|
||||||
@ -373,8 +381,17 @@ for TARGET_ARCH in ${TARGET_ARCHS}; do
|
|||||||
%% COMMAND: LANG=C LC_ALL=C autodist -p ${JOB_CURRENT} --server $PORT_REPOSITORY --repository $PORT_REPOSITORY --severity 2 -- $STAGEOPTS"
|
%% COMMAND: LANG=C LC_ALL=C autodist -p ${JOB_CURRENT} --server $PORT_REPOSITORY --repository $PORT_REPOSITORY --severity 2 -- $STAGEOPTS"
|
||||||
LANG=C LC_ALL=C autodist -p ${JOB_CURRENT} --server $PORT_REPOSITORY --repository $PORT_REPOSITORY --severity 2 -- $STAGEOPTS &>>$logfile
|
LANG=C LC_ALL=C autodist -p ${JOB_CURRENT} --server $PORT_REPOSITORY --repository $PORT_REPOSITORY --severity 2 -- $STAGEOPTS &>>$logfile
|
||||||
[ $? -gt 0 ] && {
|
[ $? -gt 0 ] && {
|
||||||
JOB_CANTPREPARE=(${JOB_CANTPREPARE[*]} $JOB_CURRENT)
|
RES=`find_source_by_provide $PORT_REPOSITORY $JOB_CURRENT`
|
||||||
|
for j in ${RES}; do
|
||||||
|
[ "$j" != "$JOB_CURRENT" ] && RESOLVED_JOB="$RESOLVED_JOB $j"
|
||||||
|
done
|
||||||
|
if [ "$RESOLVED_JOB" ]; then
|
||||||
|
echo "(FAILED) [but scheduling $RESOLVED_JOB]"
|
||||||
|
JOB_FAILED=(${JOB_FAILED[*]} $RESOLVED_JOB)
|
||||||
|
else
|
||||||
echo "(FAILED) "
|
echo "(FAILED) "
|
||||||
|
fi
|
||||||
|
JOB_CANTPREPARE=(${JOB_CANTPREPARE[*]} $JOB_CURRENT)
|
||||||
continue
|
continue
|
||||||
} || {
|
} || {
|
||||||
echo $JOB_CURRENT >> $DATAARCHDIR/preparedjobs
|
echo $JOB_CURRENT >> $DATAARCHDIR/preparedjobs
|
||||||
@ -460,6 +477,53 @@ for TARGET_ARCH in ${TARGET_ARCHS}; do
|
|||||||
}
|
}
|
||||||
echo
|
echo
|
||||||
done
|
done
|
||||||
|
if [ "${JOB[*]}" == "${JOB_FAILED[*]}" -a "${JOB_MISSINGREQ[*]}" == "" ]; then
|
||||||
|
# some new build, retry cantinstall jobs
|
||||||
|
JOB_CANTINSTALL=()
|
||||||
|
for JOB_NUM in `seq 1 ${#JOB_CANTINSTALL_OLD[*]}`; do
|
||||||
|
JOB_CURRENT=${JOB_CANTINSTALL_OLD[$JOB_NUM-1]}
|
||||||
|
if [ "`grep "^${JOB_CURRENT}$" /etc/autodist/unstage 2>/dev/null`" -o \
|
||||||
|
"`grep "^${JOB_CURRENT}$" /etc/autodist/unstage.${TARGET_ARCH} 2>/dev/null`" ]; then
|
||||||
|
echo -n "$JOB_CURRENT: "
|
||||||
|
STAGEOPTS=
|
||||||
|
else
|
||||||
|
echo -n "$JOB_CURRENT(staging): "
|
||||||
|
STAGEOPTS="$AUTOPORT_STAGEVARS"
|
||||||
|
fi
|
||||||
|
echo -n "retryinstall"
|
||||||
|
LANG=C LC_ALL=C autodist -i ${JOB_CURRENT} --arch $TARGET_ARCH --force --severity 2 -- $STAGEOPTS &>>$tmpfile
|
||||||
|
# --server $DEST_REPOSITORY --repository $PORT_REPOSITORY
|
||||||
|
[ $? -gt 0 ] && {
|
||||||
|
if [ "$VERBOSE_MODE" ]; then
|
||||||
|
echo
|
||||||
|
echo "Failed output:"
|
||||||
|
echo "=============="
|
||||||
|
cat $tmpfile
|
||||||
|
echo "=============="
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
cat $tmpfile >> $logfile
|
||||||
|
JOB_CANTINSTALL=(${JOB_CANTINSTALL[*]} $JOB_CURRENT)
|
||||||
|
echo $JOB_CURRENT >> $DATAARCHDIR/checkinstalljobs
|
||||||
|
echo "(FAILED)"
|
||||||
|
# sometimes script fails but package is installed; run fix_la_files anyway
|
||||||
|
sudo autoport-fix-environment $TARGET_ARCH
|
||||||
|
|
||||||
|
JOB_MAYBEINSTALLED_NEW=(${JOB_MAYBEINSTALLED_NEW[*]} $JOB_CURRENT)
|
||||||
|
JOB_LOG=`grep "^?= See " $tmpfile | awk '{ print $3 }'`
|
||||||
|
[ "$JOB_LOG" ] || JOB_LOG=$tmpfile
|
||||||
|
find_requirements $JOB_LOG
|
||||||
|
continue
|
||||||
|
} || {
|
||||||
|
cat $tmpfile >> $logfile
|
||||||
|
sudo autoport-fix-environment $TARGET_ARCH
|
||||||
|
JOB_MAYBEINSTALLED_NEW=(${JOB_MAYBEINSTALLED_NEW[*]} $JOB_CURRENT)
|
||||||
|
JOB_COMPLETED=(${JOB_COMPLETED[*]} $JOB_CURRENT)
|
||||||
|
echo -n "(OK)"
|
||||||
|
}
|
||||||
|
echo
|
||||||
|
done
|
||||||
|
fi
|
||||||
echo "Skipped jobs: ${JOB_SKIPPED[*]}"
|
echo "Skipped jobs: ${JOB_SKIPPED[*]}"
|
||||||
echo "Unpreparable jobs: ${JOB_CANTPREPARE[*]}"
|
echo "Unpreparable jobs: ${JOB_CANTPREPARE[*]}"
|
||||||
echo "Missing requirements: ${JOB_MISSINGREQ[*]}"
|
echo "Missing requirements: ${JOB_MISSINGREQ[*]}"
|
||||||
@ -468,7 +532,9 @@ for TARGET_ARCH in ${TARGET_ARCHS}; do
|
|||||||
echo "Failed jobs: ${JOB_FAILED[*]}"
|
echo "Failed jobs: ${JOB_FAILED[*]}"
|
||||||
write_last_file
|
write_last_file
|
||||||
|
|
||||||
[ "${JOB[*]}" == "${JOB_FAILED[*]}" -a "${JOB_MISSINGREQ[*]}" == "" ] && {
|
[ "${JOB[*]}" == "${JOB_FAILED[*]}" -a \
|
||||||
|
"${JOB_MISSINGREQ[*]}" == "" -a \
|
||||||
|
"${JOB_CANTINSTALL_OLD[*]}" == "${JOB_CANTINSTALL[*]}" ] && {
|
||||||
echo "Loop detected. Finishing. See $logfile for details."
|
echo "Loop detected. Finishing. See $logfile for details."
|
||||||
rm -f $tmpfile $tmpfile1
|
rm -f $tmpfile $tmpfile1
|
||||||
exit 1
|
exit 1
|
||||||
|
Loading…
Reference in New Issue
Block a user