summaryrefslogtreecommitdiffstats
path: root/upstreambug/reportupstream
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
commitfc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch)
treece1e3bce06471410239a6f41282e328770aa404a /upstreambug/reportupstream
parentInitial commit. (diff)
downloadmanpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz
manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rwxr-xr-xupstreambug/reportupstream239
1 files changed, 239 insertions, 0 deletions
diff --git a/upstreambug/reportupstream b/upstreambug/reportupstream
new file mode 100755
index 00000000..24bf31fc
--- /dev/null
+++ b/upstreambug/reportupstream
@@ -0,0 +1,239 @@
+#!/bin/bash
+#
+# Copyright © 2020,2022 Dr. Helge Kreutzmann <debian@helgefjell.de>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This script finds all FIXMEs in manpages and prepeares as much as possible an output suitable for bug reporting
+
+# An example of only upstream is man2/wait.2.po
+# An example of both upstream and ours is man4/vcs.4.po
+
+# CONFIG
+DCSBASE=/scr/build/src/DCS/manpages-l10n/
+CONFIGBASE=$DCSBASE/upstreambug/CONFIG
+DIALOG=$(which dialog)
+sk_temp=$((tempfile) 2>/dev/null)
+SSF_MAILER=/usr/bin/mutt
+SSF_BROWSER=/usr/bin/firefox
+SSF_TMP=/tmp/ssf
+TEMPLATE_FILE=$DCSBASE/upstreambug/TEMPLATE
+SSF_LANGLIST="cs da de es fr it mk nl pl pt_BR ro"
+
+# Allow to customize these variables if necessary
+if [ -f $HOME/.config/reportupstreamrc ] ; then
+ echo "Sourcing local config"
+ . $HOME/.config/reportupstreamrc
+fi
+
+# Check if the files and directories exist
+
+if [ ! -d $DCSBASE ]; then
+ echo "Could not find the git repository directory for manpages-l10n under $DCSBASE"
+ exit
+fi
+
+if [ ! -x $DIALOG ]; then
+ echo "Could not find the the dialog program (or not executable) $DIALOG"
+ exit
+fi
+
+if [ ! -x $SSF_MAILER ]; then
+ echo "Could not find the the mail program (or not executable) $SSF_MAILER"
+ exit
+fi
+
+if [ ! -x $SSF_BROWSER ]; then
+ echo "Could not find the the mail program (or not executable) $SSF_BROWSER"
+ exit
+fi
+
+if [ ! -d $SSF_TMP ]; then
+ mkdir -p $SSF_TMP
+ retval=$?
+
+ if [ $retval != 0 ]; then
+ echo "Dirctory for tempory files $SSF_TMP does not exist and cannot be created"
+ exit
+ fi
+fi
+
+echo "Please wait while scanning for FIXMEs …"
+cd $DCSBASE/po
+
+# Find all PO files with FIXME in them
+for pofile in $(find . -name "*.po" -exec grep FIXME "{}" -ls ";" | cut -d/ -f4 | grep -v -E "min-0..-occurences.po" | LC_ALL=C sort -u); do
+ # Now look at them for each language
+ for lang in $SSF_LANGLIST; do
+ for checkfile in $(find $lang -name $pofile); do
+# echo $checkfile $lang $pofile
+ grep FIXME $checkfile > $SSF_TMP/ssF.FIX.$lang.$pofile
+ md5sum $SSF_TMP/ssF.FIX.$lang.$pofile | cut -d " " -f1 > $SSF_TMP/ssF.md5.$lang.$pofile
+ done
+ done
+ mdnumtotal=$(cat $SSF_TMP/ssF.md5.*.$pofile| wc -l)
+ mdunique=$(cat $SSF_TMP/ssF.md5.*.$pofile| sort -u | wc -l)
+# echo "Md5total: $mdnumtotal Md5unique: $mdunique"
+# if [ $mdnumtotal -ge 2 ] ; then
+#if [ $mdunique -eq 1 ] ; then
+ if [ $mdnumtotal -ge 2 -a $mdunique -eq 1 ] ; then
+# echo "Blacklist-Kandidat $pofile"
+ echo $pofile >> $SSF_TMP/ssF.BLACKLIST
+ else
+ echo $pofile >> $SSF_TMP/ssF.WHITELIST
+ let cfcounter=0
+ cfilename=""
+ for cfile in $CONFIGBASE/CONFIG.*; do
+ #echo "grep -x $pofile $cfile"
+ if [ $(grep -x $pofile $cfile) ] ; then
+ let cfcounter=$cfcounter+1
+ finalfilename=$(basename $cfile)
+ fi
+ done
+ if [ $cfcounter -eq 0 ] ; then
+ echo "ERROR: $pofile not in any CONFIG file, please add and rerun the script" | logger -t $0
+ fi
+ if [ $cfcounter -gt 1 ] ; then
+ echo "ERROR: $pofile is in several ($cfcounter) CONFIG files, please fix them and rerun the script" | logger -t $0
+ fi
+ if [ $cfcounter -eq 1 ] ; then
+ echo $pofile >> $SSF_TMP/ssF.REPORT.$finalfilename
+ fi
+ fi
+done
+
+# The following line does not work, the first (largest) item is ignored??
+#ls -lhS $SSF_TMP/ssF.REPORT.*| awk '{print $9}'|awk 'FS="." {print $4}'
+
+# This is not very elegant, but works around the issue of skipping the first entry
+echo "Dummy" > $SSF_TMP/ssF.list.Dummy
+ls -lhS $SSF_TMP/ssF.REPORT.*| awk '{print $9}' >> $SSF_TMP/ssF.list.Dummy
+ssf_ANZAHL=$(ls -l $SSF_TMP/ssF.REPORT.* |wc -l)
+
+ssf_STOP=0
+while [ $ssf_STOP -eq 0 ]; do
+ echo -n "$DIALOG --clear --title \"Reporting upstream\" --menu \"Choose which package to report for\" 20 71 $ssf_ANZAHL " > $SSF_TMP/ssf.menu
+ for i in $(cat $SSF_TMP/ssF.list.Dummy|awk 'FS="." {print $4}'|grep -v -E "^$"); do
+ ssF_date="not reported yet"
+ if [ -f $CONFIGBASE/LAST.$i ]; then
+ ssF_date=$(tail -n1 $CONFIGBASE/LAST.$i)
+ fi
+ echo "Entry: $i (Last reported: $ssF_date)"
+ echo -n "\"$i\" \"$i (Last reported: $ssF_date)\" " >> $SSF_TMP/ssf.menu
+ done
+ chmod +x $SSF_TMP/ssf.menu
+ bash $SSF_TMP/ssf.menu 2> $sk_temp
+ retval=$?
+
+ if [ $retval == 0 ]; then
+ ssf_SELCTION=$(cat $sk_temp)
+
+ echo $ssf_SELCTION
+ bugtype=$(grep Bugtype $CONFIGBASE/CONFIG.$ssf_SELCTION)
+ bfound=$?
+
+ if [ $bfound == 0 ]; then
+ bugmethod=$(echo $bugtype|cut -d" " -f2)
+ bugaddres=$(echo $bugtype|cut -d" " -f3)
+ bnote=$(grep Note: $CONFIGBASE/CONFIG.$ssf_SELCTION|sed 's/Note: //')
+
+ echo "Reporting bugs for $ssf_SELCTION as $bugtype"
+ echo ""
+ echo "Please consider the following when reporting:"
+ echo "$bnote"
+ echo ""
+ echo "Now the template is prepared with all FIXMEs. Please turn the template into"
+ echo "proper text suitable for reporting. Remove duplications and FIXMEs coming"
+ echo "from upstream."
+ echo ""
+ echo "Press Enter to generate the template"
+ read
+ echo "Please wait …"
+ rm -rf $SSF_TMP/ssF.BUGTEMPLATE
+ # This command does not work, it also replace double letters by single ones
+ #cat $TEMPLATE_FILE | tr -s PACKAGE $ssf_SELCTION >> $SSF_TMP/ssF.BUGTEMPLATE
+ cat $TEMPLATE_FILE >> $SSF_TMP/ssF.BUGTEMPLATE
+ for rf in $(cat $SSF_TMP/ssF.REPORT.CONFIG.$ssf_SELCTION|sort -u); do
+ find $DCSBASE -name $rf -exec msggrep -C -e FIXME -E "{}" ";" > $SSF_TMP/ssF.BUGTEMPLATE.tmp
+ if [ -s $SSF_TMP/ssF.BUGTEMPLATE.tmp ]; then
+ echo $rf >> $SSF_TMP/ssF.BUGTEMPLATE
+ #find $DCSBASE -name $rf -exec msggrep -C -e FIXME -E "{}" ";" >> $SSF_TMP/ssF.BUGTEMPLATE
+ cat $SSF_TMP/ssF.BUGTEMPLATE.tmp >> $SSF_TMP/ssF.BUGTEMPLATE
+ echo "============== End of file ================" >> $SSF_TMP/ssF.BUGTEMPLATE
+ fi
+ done
+
+ if [ $bugmethod == "email" ]; then
+ $SSF_MAILER -s "Issues in man pages of $ssf_SELCTION" -i $SSF_TMP/ssF.BUGTEMPLATE $bugaddres
+ elif [ $bugmethod == "web" ]; then
+ $SSF_BROWSER $bugaddres
+ vim $SSF_TMP/ssF.BUGTEMPLATE
+ elif [ $bugmethod == "reportbug" ]; then
+ # Use --header= instead of --body-file?
+ # FIXME: Not interactive, not asking for confirmation
+ # reportbug --no-debconf --no-config-files --no-query-bts --no-check-installed --no-bug-script --body-file=$SSF_TMP/ssF.BUGTEMPLATE
+ # Try this:
+ # reportbug --no-debconf --no-config-files --no-query-bts --no-check-installed --no-bug-script --print --body-file=$SSF_TMP/ssF.BUGTEMPLATE
+ # For now, simply create the template manually
+ echo "Package: $ssf_SELCTION" > $SSF_TMP/ssF.BUGTEMPLATEr
+ echo "Severity: minor" >> $SSF_TMP/ssF.BUGTEMPLATEr
+ echo "Tags: patch l10n" >> $SSF_TMP/ssF.BUGTEMPLATEr
+ echo "X-Debbugs-CC: mario.blaettermann@gmail.com" $SSF_TMP/ssF.BUGTEMPLATEr
+ echo "" >> $SSF_TMP/ssF.BUGTEMPLATEr
+ cat $SSF_TMP/ssF.BUGTEMPLATE >> $SSF_TMP/ssF.BUGTEMPLATEr
+ $SSF_MAILER -s "$ssf_SELCTION: Issues in man pages" -i $SSF_TMP/ssF.BUGTEMPLATEr submit@bugs.debian.org
+ fi
+ echo "If you reported the bugs, please answer yes to the following question."
+ echo ""
+ echo "Should the bug reporting date be recorded?"
+ read -p "(y/n)> "
+ if [ $REPLY == "y" ]; then
+ if [ $CONFIGBASE/LAST.$ssf_SELCT ]; then
+ date --rfc-3339=date >> $CONFIGBASE/LAST.$ssf_SELCTION
+ git add $CONFIGBASE/LAST.$ssf_SELCTION
+ else
+ date --rfc-3339=date >> $CONFIGBASE/LAST.$ssf_SELCTION
+ fi
+ git commit -m "reportupstream: Reported bugs for $ssf_SELCTION" $CONFIGBASE/LAST.$ssf_SELCTION
+# echo "Writing date into $CONFIGBASE/LAST.$ssf_SELCTION"
+# date --rfc-3339=date
+# else
+# echo "Not recording date."
+ fi
+# read
+ else
+ echo "Reporting bugs unkown, check $CONFIGBASE/CONFIG.$ssf_SELCTION for the field \"bugtype\""
+ read
+ fi
+ else
+ ssf_STOP=1
+ fi
+done
+
+echo "Should the temporary directory $SSF_TMP be removed?"
+read -p "(y/n)> "
+if [ $REPLY == "y" ]; then
+ rm -r $SSF_TMP
+ retval=$?
+
+ if [ $retval != 0 ]; then
+ echo "Dirctory for tempory files $SSF_TMP could not be removed."
+ exit
+ fi
+fi
+
+clear
+
+# A10 is not enough :-((
+#for i in $(cat $SSF_TMP/ssF.REPORT.CONFIG.linuxmanpages); do find . -name $i -exec grep -A10 FIXME "{}" ";" -print ; done