SPECS: builder - update_md5/check_md5 separated from get_files. co...
glen
glen at pld-linux.org
Tue May 23 23:26:50 CEST 2006
Author: glen Date: Tue May 23 21:26:50 2006 GMT
Module: SPECS Tag: HEAD
---- Log message:
- update_md5/check_md5 separated from get_files. could be buggy!
---- Files affected:
SPECS:
builder (1.433 -> 1.434)
---- Diffs:
================================================================
Index: SPECS/builder
diff -u SPECS/builder:1.433 SPECS/builder:1.434
--- SPECS/builder:1.433 Mon May 22 23:41:31 2006
+++ SPECS/builder Tue May 23 23:26:45 2006
@@ -759,6 +759,80 @@
return $result
}
+update_md5()
+{
+ if [ $# -eq 0 ]; then
+ return
+ fi
+
+ update_shell_title "update md5"
+ if [ -n "$DEBUG" ]; then
+ set -x;
+ set -v;
+ fi
+
+ cd "$SOURCE_DIR"
+
+ # pass 1: check files to be fetched
+ local todo
+ local need_files
+ for i in "$@"; do
+ local fp=$(nourl "$i")
+ local srcno=$(src_no "$i")
+ if [ -n "$UPDATE5" ]; then
+ if [ -n "$ADD5" ]; then
+ [ "$fp" = "$i" ] && continue # FIXME what is this check doing?
+ grep -qiE '^#[ ]*Source'$srcno'-md5[ ]*:' $SPECS_DIR/$SPECFILE && continue
+ else
+ grep -qiE '^#[ ]*Source'$srcno'-md5[ ]*:' $SPECS_DIR/$SPECFILE || continue
+ fi
+ fi
+ if [ ! -f "$fp" ] || [ $ALWAYS_CVSUP = "yes" ]; then
+ need_files="$need_files $i"
+ fi
+ done
+
+ # pass 1a: get needed files
+ if [ "$need_files" ]; then
+ get_files $need_files
+ fi
+
+ # pass 2: proceed with md5 adding or updating
+ for i in "$@"; do
+ local fp=$(nourl "$i")
+ local srcno=$(src_no "$i")
+ if [ -n "$UPDATE5" ] && \
+ ( ( [ -n "$ADD5" ] && echo $i | grep -q -E 'ftp://|http://|https://' && \
+ [ -z "$(grep -E -i '^NoSource[ ]*:[ ]*'$i'([ ]|$)' $SPECS_DIR/$SPECFILE)" ] ) || \
+ grep -q -i -E '^#[ ]*source'$srcno'-md5[ ]*:' $SPECS_DIR/$SPECFILE )
+ then
+ echo "Updating source-$srcno md5."
+ md5=$(md5sum "$fp" | cut -f1 -d' ')
+ perl -i -ne '
+ print unless /^\s*#\s*Source'$srcno'-md5\s*:/i;
+ print "# Source'$srcno'-md5:\t'$md5'\n"
+ if /^Source'$srcno'\s*:\s+/;
+ ' \
+ $SPECS_DIR/$SPECFILE
+ fi
+ done
+}
+
+check_md5()
+{
+ update_shell_title "check md5"
+
+ for i in "$@"; do
+ if good_md5 "$i" && good_size "$i"; then
+ continue
+ fi
+
+ echo "MD5 sum mismatch or 0 size. Use -U to refetch sources,"
+ echo "or -5 to update md5 sums, if you're sure files are correct."
+ Exit_error err_no_source_in_repo $i
+ done
+}
+
get_files()
{
update_shell_title "get_files"
@@ -784,20 +858,18 @@
SHELL_TITLE_PREFIX="get_files[$nc/$#]"
update_shell_title "$i"
local fp=`nourl "$i"`
- if [ -f "$fp" ] && [ "$SKIP_EXISTING_FILES" = "yes" ]; then
+ if [ "$SKIP_EXISTING_FILES" = "yes" ] && [ -f "$fp" ]; then
continue
fi
- local srcno=$(src_no $i)
- if [ -n "$UPDATE5" ]; then
- if [ -n "$ADD5" ]; then
- [ "$fp" = "$i" ] && continue
- grep -qiE '^#[ ]*Source'$srcno'-md5[ ]*:' $SPECS_DIR/$SPECFILE && continue
- else
- grep -qiE '^#[ ]*Source'$srcno'-md5[ ]*:' $SPECS_DIR/$SPECFILE || continue
- fi
- fi
+
FROM_DISTFILES=0
local srcmd5=$(src_md5 "$i")
+
+ # we know if source/patch is present in cvs/distfiles
+ # - has md5 (in distfiles)
+ # - in cvs... ideas?
+
+ # CHECK: local file didn't exist or always cvs up (first) requested.
if [ ! -f "$fp" ] || [ $ALWAYS_CVSUP = "yes" ]; then
if echo $i | grep -vE '(http|ftp|https|cvs|svn)://' | grep -qE '\.(gz|bz2)$']; then
echo "Warning: no URL given for $i"
@@ -812,7 +884,8 @@
url=$(distfiles_url "$i")
url_attic=$(distfiles_attic_url "$i")
FROM_DISTFILES=1
- if [ "`echo $url | grep -E '^(\.|/)'`" ]; then
+ # is $url local file?
+ if [[ "$url" = [./]* ]]; then
update_shell_title "${GETLOCAL%% *}: $url"
${GETLOCAL} $url $target
else
@@ -826,7 +899,9 @@
${GETURI2} ${OUTFILEOPT} "$target" "$url"
fi
fi
- if ! test -s "$target"; then
+
+ # is it empty file?
+ if [ ! -s "$target" ]; then
rm -f "$target"
if [ `echo $url_attic | grep -E '^(\.|/)'` ]; then
update_shell_title "${GETLOCAL%% *}: $url_attic"
@@ -843,7 +918,8 @@
fi
fi
fi
- if test -s "$target"; then
+
+ if [ -s "$target" ]; then
cvsignore_df $target
else
rm -f "$target"
@@ -878,23 +954,13 @@
fi
fi
+
+ # the md5 check must be moved elsewhere as if we've called from update_md5 the md5 is wrong.
if [ ! -f "$fp" -a "$FAIL_IF_NO_SOURCES" != "no" ]; then
Exit_error err_no_source_in_repo $i;
- elif [ -n "$UPDATE5" ] && \
- ( ( [ -n "$ADD5" ] && echo $i | grep -q -E 'ftp://|http://|https://' && \
- [ -z "$(grep -E -i '^NoSource[ ]*:[ ]*'$i'([ ]|$)' $SPECS_DIR/$SPECFILE)" ] ) || \
- grep -q -i -E '^#[ ]*source'$srcno'-md5[ ]*:' $SPECS_DIR/$SPECFILE )
- then
- echo "Updating source-$srcno md5."
- md5=$(md5sum "$fp" | cut -f1 -d' ')
- perl -i -ne '
- print unless /^\s*#\s*Source'$srcno'-md5\s*:/i;
- print "# Source'$srcno'-md5:\t'$md5'\n"
- if /^Source'$srcno'\s*:\s+/;
- ' \
- $SPECS_DIR/$SPECFILE
fi
+ # we check md5 here just only to refetch immediately
if good_md5 "$i" && good_size "$i"; then
:
elif [ "$FROM_DISTFILES" = 1 ]; then
@@ -909,7 +975,7 @@
update_shell_title "${GETURI2%% *}: $url"
${GETURI2} ${OUTFILEOPT} "$target" "$url"
fi
- if ! test -s "$target"; then
+ if [ ! -s "$target" ]; then
rm -f "$target"
update_shell_title "${GETURI%% *}: $url_attic"
${GETURI} ${OUTFILEOPT} "$target" "$url_attic" || \
@@ -920,14 +986,6 @@
fi
test -s "$target" || rm -f "$target"
fi
-
- if good_md5 "$i" && good_size "$i" ; then
- :
- else
- echo "MD5 sum mismatch or 0 size. Use -U to refetch sources,"
- echo "or -5 to update md5 sums, if you're sure files are correct."
- Exit_error err_no_source_in_repo $i
- fi
done
SHELL_TITLE_PREFIX=""
@@ -1660,13 +1718,13 @@
do
case "${1}" in
-5 | --update-md5 )
- COMMAND="get";
+ COMMAND="update_md5";
NODIST="yes"
NOCVSSPEC="yes"
UPDATE5="yes"
shift ;;
-a5 | --add-md5 )
- COMMAND="get";
+ COMMAND="update_md5";
NODIST="yes"
NOCVS="yes"
NOCVSSPEC="yes"
@@ -1837,7 +1895,7 @@
INTEGER_RELEASE="yes"
shift;;
-U | --update )
- COMMAND="get"
+ COMMAND="update_md5"
UPDATE="yes"
NOCVSSPEC="yes"
NODIST="yes"
@@ -1944,7 +2002,8 @@
if [ -n "$NOSOURCE0" ] ; then
SOURCES=`echo $SOURCES | xargs | sed -e 's/[^ ]*//'`
fi
- get_files $SOURCES $PATCHES;
+ get_files $SOURCES $PATCHES
+ check_md5 $SOURCES
build_package;
if [ "$UPDATE_POLDEK_INDEXES" = "yes" -a "$COMMAND" != "build-prep" ]; then
run_poldek --sdir="${POLDEK_INDEX_DIR}" --mkidxz
@@ -1959,8 +2018,9 @@
if [ -n "$SPECFILE" ]; then
get_spec;
parse_spec;
- get_files $SOURCES $PATCHES;
- branch_files $TAG "$SOURCES $PATCHES $ICONS";
+ get_files $SOURCES $PATCHES
+ check_md5 $SOURCES
+ branch_files $TAG $SOURCES $PATCHES $ICONS
else
Exit_error err_no_spec_in_cmdl;
fi
@@ -1975,6 +2035,21 @@
SOURCES=`echo $SOURCES | xargs | sed -e 's/[^ ]*//'`
fi
get_files $SOURCES $PATCHES
+ check_md5 $SOURCES
+ else
+ Exit_error err_no_spec_in_cmdl;
+ fi
+ ;;
+ "update_md5" )
+ init_builder;
+ if [ -n "$SPECFILE" ]; then
+ get_spec;
+ parse_spec
+
+ if [ -n "$NOSOURCE0" ] ; then
+ SOURCES=`echo $SOURCES | xargs | sed -e 's/[^ ]*//'`
+ fi
+ update_md5 $SOURCES
else
Exit_error err_no_spec_in_cmdl;
fi
@@ -1995,8 +2070,9 @@
new_SOURCES="$new_SOURCES $file"
done
SOURCES="$new_SOURCES"
- get_files $SOURCES $PATCHES;
- tag_files "$SOURCES $PATCHES $ICONS";
+ get_files $SOURCES $PATCHES
+ check_md5 $SOURCES
+ tag_files $SOURCES $PATCHES $ICONS
else
Exit_error err_no_spec_in_cmdl;
fi
@@ -2010,8 +2086,7 @@
DONT_PRINT_REVISION="yes"
get_spec
parse_spec
- SAPS="$SOURCES $PATCHES"
- for SAP in $SAPS ; do
+ for SAP in $SOURCES $PATCHES; do
echo $SAP | awk '{gsub(/.*\//,"") ; print}'
done
;;
@@ -2032,8 +2107,7 @@
DONT_PRINT_REVISION="yes"
get_spec
parse_spec
- SAPS="$SOURCES $PATCHES"
- for SAP in $SAPS ; do
+ for SAP in $SOURCES $PATCHES; do
echo $SOURCE_DIR/$(echo $SAP | awk '{gsub(/.*\//,"") ; print }')
done
;;
@@ -2043,8 +2117,7 @@
DONT_PRINT_REVISION="yes"
get_spec
parse_spec
- SAPS="$SOURCES $PATCHES"
- for SAP in $SAPS ; do
+ for SAP in $SOURCES $PATCHES; do
if [ -n "$(src_md5 "$SAP")" ]; then
distfiles_path "$SAP"
fi
@@ -2056,8 +2129,7 @@
DONT_PRINT_REVISION="yes"
get_spec
parse_spec
- SAPS="$SOURCES $PATCHES"
- for SAP in $SAPS ; do
+ for SAP in $SOURCES $PATCHES; do
if [ -n "$(src_md5 "$SAP")" ]; then
distfiles_url "$SAP"
fi
================================================================
---- CVS-web:
http://cvs.pld-linux.org/SPECS/builder?r1=1.433&r2=1.434&f=u
More information about the pld-cvs-commit
mailing list