tackle delayed front-page problem: force processing order for recursive Make jobs

svn path=/trunk/; revision=35050
This commit is contained in:
paul 2017-02-15 17:30:31 +00:00
parent 7a73de1413
commit 1fd7423d9b
2 changed files with 46 additions and 27 deletions

View File

@ -6,12 +6,15 @@ all: subdirs localmenus date_today SOURCEUPDATES
# Dive into subdirectories
# -----------------------------------------------------------------------------
SUBDIRS := $(shell find */* -name "Makefile" | xargs --max-args=1 dirname)
SUBDIRS := $(shell find */* -name "Makefile" | xargs dirname)
.PHONY: subdirs $(SUBDIRS)
subdirs: $(SUBDIRS)
# run jobs for tools/ only after events/ and news/ have been completed
tools: | events news
$(SUBDIRS):
$(MAKE) -k -C $@ || true
@ -54,11 +57,13 @@ d_year.en.xml: d_month.en.xml
grep -q '$(YEAR)' $@ || echo '$(YEAR)' >$@
.PHONY: SOURCEUPDATES
# finish jobs in subdirs before updating .sources
SOURCEUPDATES: | subdirs
SOURCEUPDATES: $(shell find ./ -name '*.sources')
SOURCEREQS = $(shell ./build/source_globber.sh sourceglobs $@ |sed -r 's;$$;.??.xml;g')
SOURCEDIRS = $(shell sed -rn 's;^(.*/)[^/]*:(\[\]|global)$$;\1;gp' $@)
.SECONDEXPANSION:
%.sources: $$(SOURCEREQS)
touch $@
%.sources: $$(SOURCEDIRS)
%.sources: $$(SOURCEDIRS) $$(SOURCEREQS)
touch $@

View File

@ -36,6 +36,26 @@ infile=$1
outdir=$2
# -----------------------------------------------------------------------------
# Create a list of files
# -----------------------------------------------------------------------------
getlanguages(){
for i in index.*.xhtml;
do
echo $i|cut -d . -f 2
done|grep -xv en
}
languages="$(getlanguages)"
> $infile
for lang in $(getlanguages)
do
find . -name '*.en.xhtml' -exec bash -c 'echo '$lang' $(dirname '{}'|xargs echo -n; echo -n /; basename {} .en.xhtml){.'$lang'.xhtml,.en.xhtml}' ';'
> ${infile}.$lang
done >> $infile
# -----------------------------------------------------------------------------
# Create a separate file per language
# -----------------------------------------------------------------------------
@ -47,28 +67,22 @@ outdir=$2
# Performance seems to be much better if we do it in 2 separate runs.
# Otherwise, we would have to run the grep for each line of the file.
# First run: missing translations
sort "${infile}" \
| uniq \
| sed --expression='s/\.\///g' \
| grep --invert-match --file="tools/translation-ignore.txt" \
| while read language wantfile havefile; do
if [ ! -f "${wantfile}" ]; then
date="$(date --iso-8601 --reference=${havefile})"
echo "missing ${date} ${wantfile} NONE ${havefile}" >> "${infile}.${language}"
fi
done
# Second run: outdated translations
# First: missing translations
# Second: outdated translations
sort "${infile}" \
| uniq \
| sed --expression='s/\.\///g' \
| while read language wantfile havefile; do
if [ -f "${wantfile}" ]; then
date1="$(date --iso-8601 --reference=${wantfile})"
date2="$(date --iso-8601 --reference=${havefile})"
echo "outdated ${date2} ${wantfile} ${date1} ${havefile}" >> "${infile}.${language}"
fi
havedate="$(date --reference=${havefile} +%s)"
if [ ! -f "${wantfile}" ]; then
echo "missing ${havedate} ${wantfile} NONE ${havefile}" >> "${infile}.${language}"
else
date="$(date --reference=${wantfile} +%s)"
if [[ $date -lt $havedate ]]
then
echo "outdated ${havedate} ${wantfile} ${date} ${havefile}" >> "${infile}.${language}"
fi
fi
done
@ -139,14 +153,14 @@ for file in ${infile}.*; do
echo " <td>"
echo " <a href=\"${srcroot}/${wantfile}\">${wantfile}</a>"
echo " </td>"
echo " <td align=\"center\">${date1}</td>"
echo " <td align=\"center\">$( date +%d-%m-%Y -d @${date1} )</td>"
echo " <td>"
echo " <a href=\"${cvsroot}/${wantfile}\">[changelog]</a>"
echo " </td>"
echo " <td>"
echo " <a href=\"${srcroot}/${havefile}\">${havefile}</a>"
echo " </td>"
echo " <td align=\"center\">${date2}</td>"
echo " <td align=\"center\">$( date +%d-%m-%Y -d @${date2} )</td>"
echo " <td>"
echo " <a href=\"${cvsroot}/${havefile}\">[changelog]</a>"
echo " </td>"
@ -157,7 +171,7 @@ for file in ${infile}.*; do
echo " <td>"
echo " <a href=\"${srcroot}/${havefile}\">${havefile}</a>"
echo " </td>"
echo " <td align=\"center\">${date2}</td>"
echo " <td align=\"center\">$( date +%d-%m-%Y -d @${date2} )</td>"
fi
echo " </tr>"
done
@ -209,14 +223,14 @@ grep --no-filename "^outdated" ${infile}.* \
echo " <td>"
echo " <a href=\"${srcroot}/${wantfile}\">${wantfile}</a>"
echo " </td>"
echo " <td align=\"center\">${date1}</td>"
echo " <td align=\"center\">$( date +%d-%m-%Y -d @${date1})</td>"
echo " <td>"
echo " <a href=\"${cvsroot}/${wantfile}\">[changelog]</a>"
echo " </td>"
echo " <td>"
echo " <a href=\"${srcroot}/${havefile}\">${havefile}</a>"
echo " </td>"
echo " <td align=\"center\">${date2}</td>"
echo " <td align=\"center\">$( date +%d-%m-%Y -d @${date2})</td>"
echo " <td>"
echo " <a href=\"${cvsroot}/${havefile}\">[changelog]</a>"
echo " </td>"