From 3d1d339a76cb7563b7ee534919cda994a7639a68 Mon Sep 17 00:00:00 2001 From: Johannes 'josch' Schauer Date: Wed, 21 Nov 2018 13:54:10 +0100 Subject: Orphan the package and include and use a copy of the ancient po4a-build script --- Makefile | 4 +- debian/changelog | 7 + debian/control | 3 +- po4a-build | 419 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 429 insertions(+), 4 deletions(-) create mode 100755 po4a-build diff --git a/Makefile b/Makefile index f77495e..6220863 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ all: docbuild $(MAKE) -C po docbuild: - po4a-build + ./po4a-build install: $(MAKE) -C po install DESTDIR=../debian/multistrap @@ -20,5 +20,5 @@ clean: # adds the POT file to the source tarball native-dist: Makefile - po4a-build --pot-only + ./po4a-build --pot-only $(MAKE) -C po pot diff --git a/debian/changelog b/debian/changelog index c39b780..37eb525 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +multistrap (2.2.10) unstable; urgency=medium + + * Orphaning the package, See #914282 + * Include and use a copy of the ancient po4a-build script. (Closes: #906386) + + -- Johannes 'josch' Schauer Wed, 21 Nov 2018 15:00:46 +0100 + multistrap (2.2.9) unstable; urgency=medium * Fix foreign-multiarch multistraps diff --git a/debian/control b/debian/control index dbbf836..8637dc2 100644 --- a/debian/control +++ b/debian/control @@ -1,8 +1,7 @@ Source: multistrap Section: utils Priority: optional -Maintainer: Johannes Schauer -Uploaders: Wookey +Maintainer: Debian QA Group Build-Depends: debhelper (>= 10) Build-Depends-Indep: intltool, po4a (>= 0.37.1), bash-completion Standards-Version: 3.9.6 diff --git a/po4a-build b/po4a-build new file mode 100755 index 0000000..0d28689 --- /dev/null +++ b/po4a-build @@ -0,0 +1,419 @@ +#!/bin/sh +set -e + +# Copyright (C) 2006-2009 Neil Williams +# +# 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 . + +# pull in /usr/bin/gettext.sh +. gettext.sh + +TEXTDOMAIN="po4a" +export TEXTDOMAIN +# this DIR might need to be configurable. +TEXTDOMAINDIR="/usr/share/locale" +export TEXTDOMAINDIR + +# DEFAULTS: +# name and location of the config file +# relative to the top level source directory of the translations +# i.e. the directory containing ./po/ +CONFIG="po4a.config" +# PODIR po directory for manpages/docs +PODIR="po" +# POTFILE path +POTFILE="" +# base directory for generated files, e.g. doc +BASEDIR="" +# the binary packages that will contain generated manpages +BINARIES="" +# the Docbook XML manpages for Section 3. +XMLMAN3="" +# the binary packages using DocBook XML & xsltproc +XMLPACKAGES="" +# the DocBook XML files for Section 1. +XMLMAN1="" +# the pattern to find the XML files +XMLDIR="" +# the pattern to find the .docbook files +DOCBOOKDIR="" +# the XSL file to use for Docbook XSL +XSLFILE="http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl" +# the POD files for man1 +PODFILE="" +# the POD files for man3/ - module names regenerated from the path. +PODMODULES="" +# POD files for section 7 +POD7FILES="" +# POD files for section 5 +POD5FILES="" +# the binary packages using POD +PODPACKAGES="" +# html output (subdirectory of BASEDIR) +HTMLDIR="" +# html DocBook file +HTMLFILE="" +# the XSL file to use for Docbook XSL +HTMLXSL="http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl" +# Minimal threshold for translation percentage to keep +KEEP= + +# remember to add something to the clean:: rule in debian/rules +# to remove each binary package sub-directory. +# $(RM) -r doc/emdebian-rootfs doc/multistrap + +# below this point, no changes should be needed. + +# use a default po4a-build.cnf in the current directory. +FILE="po4a-build.conf" + +wrap_langs () { + if [ -z "$LANGS" ]; then + echo "$1 $2" >> $CONFIG + else + echo "$1 $2 $3" >> $CONFIG + fi +} + +usagehelp () { + # print out help message + eval_gettext " +po4a-build - po4a frontend + +Syntax: po4a-build + po4a-build --pot-only + +Commands: +-?|-h|--help|--version: print this help message and exit +--pot-only: only create the POT file + +Options: +-f|--file FILE: po4a-build.conf config file path + +"; echo +} + +while [ -n "$1" ]; do +case "$1" in + --help|-h|-\?|--version) + usagehelp + exit; + ;; + --pot-only) + POTONLY=1 + shift + ;; + -f|--file) + shift + FILE=$1 + shift + ;; + *) + com=$1 + eval_gettext "Unrecognised command: \$com"; echo + exit; + ;; +esac +done + +if [ ! -f "$FILE" ]; then + # without config, there's nothing to do. + eval_gettext "Cannot find config file! '\$FILE'"; echo + exit 3 +else + . ./$FILE +fi +OURS=`pwd|tr -d '\n'` +cd `dirname $FILE` + +if [ "$USE_INTERNAL_PO4A" = "yes" ]; then + TEXTDOMAINDIR=$OURS/blib/po +fi + +# calculate the langs, automatically. +LANGS=`ls $PODIR/*.po 2>/dev/null || true` +if [ ! -z "$LANGS" ]; then + LANGS=`ls $PODIR/*.po | sed -e 's/.*\/\(.*\)\.po/\1 /' || true` +fi +if [ ! -z "$LANGS" ]; then + LANGS=`echo $LANGS|tr -d '\n'` + echo "[po4a_langs] $LANGS" > $CONFIG + else + echo > $CONFIG +fi +wrap_langs "[po4a_paths]" "$POTFILE" "\$lang:$PODIR/\$lang.po" + +if [ -n "$XMLDIR" ]; then + for file in $XMLDIR/*.xml; do + LOCAL=`basename $file` + wrap_langs "[type:docbook]" "$file" "\$lang:$XMLDIR/\$lang/$LOCAL" + done +fi +if [ -n "$DOCBOOKDIR" ]; then + for file in $DOCBOOKDIR; do + LOCAL=`basename $file` + wrap_langs "[type:docbook]" "$file" "\$lang:$BASEDIR/\$lang/$LOCAL" + done +fi +if [ -n "$PODFILE" ]; then + for file in $PODFILE; do + LOCAL=`basename $file` + wrap_langs "[type:pod]" "$file" "\$lang:$BASEDIR/pod/1/\$lang/$LOCAL" + done +fi +if [ -n "$POD5FILES" ]; then + for file in $POD5FILES; do + LOCAL=`basename $file` + wrap_langs "[type:pod]" "$file" "\$lang:$BASEDIR/pod/5/\$lang/$LOCAL" + done +fi +if [ -n "$POD7FILES" ]; then + for file in $POD7FILES; do + LOCAL=`basename $file` + wrap_langs "[type:pod]" "$file" "\$lang:$BASEDIR/pod/7/\$lang/$LOCAL" + done +fi +if [ -n "$PODMODULES" ]; then + for file in $PODMODULES; do + wrap_langs "[type:pod]" "$file" "\$lang:$BASEDIR/pod/3/\$lang/$file" + done +fi + +if [ "$POTONLY" = "1" ]; then + # Allow internal builds within po4a + if [ "$USE_INTERNAL_PO4A" = "yes" ]; then + # test + eval_gettext "Internal po4a from \$OURS being used instead of /usr/bin/"; echo + PERL5LIB=$OURS/lib perl $OURS/po4a --no-translations $CONFIG + else + po4a --no-translations $CONFIG + fi + exit +fi + +for d in $BINARIES; do + for l in $LANGS; do + mkdir -p $BASEDIR/$d/man/$l/man1/ + if [ "$d" = "$XMLsMAN3" ]; then + mkdir -p $BASEDIR/$d/man/$l/man3/ + fi + if [ -n "$PODMODULES" ]; then + mkdir -p $BASEDIR/$d/man/$l/man3/ + fi + if [ -n "$HTMLDIR" ]; then + mkdir -p $BASEDIR/$d/$l/$HTMLDIR/ + fi + if [ -n "$POD5FILES" ]; then + mkdir -p $BASEDIR/$d/man/$l/man5/ + fi + if [ -n "$POD7FILES" ]; then + mkdir -p $BASEDIR/$d/man/$l/man7/ + fi + done + mkdir -p $BASEDIR/$d/man/man1/ + if [ "$d" = "$XMLMAN3" ]; then + mkdir -p $BASEDIR/$d/man/man3/ + fi + mkdir -p $BASEDIR/pod/$l/ + if [ -n "$PODMODULES" ]; then + mkdir -p $BASEDIR/$d/man/man3/ + fi + if [ -n "$POD5FILES" ]; then + mkdir -p $BASEDIR/$d/man/man5/ + fi + if [ -n "$POD7FILES" ]; then + mkdir -p $BASEDIR/$d/man/man7/ + fi +done + +# use -k to create all XML even if untranslated or the XSL breaks the build. +if [ -n "$KEEP" ]; then + K="-k $KEEP" +fi + +# Allow internal builds within po4a +if [ "$USE_INTERNAL_PO4A" = "yes" ]; then + eval_gettext "Internal po4a from \$OURS being used instead of /usr/bin/"; echo + PERL5LIB=$OURS/lib perl $OURS/po4a $K $CONFIG +else + po4a $K $CONFIG +fi + +for d in $BINARIES; do + for P in $XMLPACKAGES; do + if [ $d = $P ]; then + for X in $XMLMAN1; do + # TRANSLATORS: $X contains the name of the manual page + eval_gettext "Processing untranslated files for \$X (1). . ."; echo + MANDIR=$BASEDIR/$P/man/man1/ + XML_CATALOG_FILES="/etc/xml/catalog" \ + xsltproc -o $MANDIR --nonet $XSLFILE $XMLDIR/$X + done + for X3 in $XMLMAN3; do + # TRANSLATORS: $X3 contains the name of the manual page + eval_gettext "Processing untranslated files for \$X3 (3). . ."; echo + MANDIR=$BASEDIR/$P/man/man3/ + XML_CATALOG_FILES="/etc/xml/catalog" \ + xsltproc -o $MANDIR --nonet $XSLFILE $XMLDIR/$X3 + done + fi + done + for POD in $PODPACKAGES; do + if [ $d = "$POD" ]; then + for file in $PODFILE; do + LOCAL=`basename $file` + # TRANSLATORS: $file contains the basename of the POD file + eval_gettext "Processing untranslated files for \$file (1) . . ."; echo + pod2man -s 1 $file $BASEDIR/$POD/man/man1/$LOCAL.1 + done + if [ -n "$PODMODULES" ]; then + for file in $PODMODULES; do + # a bit of sed magic to convert a path to a module name. + name=`echo $file| sed -e 's/^lib\///'|sed -e 's/\//::/g'|sed -e 's/\.pm$//'` + # TRANSLATORS: $name contains the Perl module name + eval_gettext "Processing untranslated files for \$name (3) . . ."; echo + pod2man -s 3 $file $BASEDIR/$POD/man/man3/$name.3 + done + fi + if [ -n "$POD5FILES" ]; then + for file in $POD5FILES; do + LOCAL=`basename $file` + # TRANSLATORS: $file contains the basename of the POD file + eval_gettext "Processing untranslated files for \$file (5) . . ."; echo + # shorten names that already contain the 5. + SHORT=`echo $LOCAL|cut -d'5' -f1|sed -e 's/\.$//'` + if [ -n "$SHORT" ]; then + pod2man -s 5 $file $BASEDIR/$POD/man/man5/${SHORT}.5 + else + pod2man -s 5 $file $BASEDIR/$POD/man/man5/${LOCAL}.5 + fi + done + fi + if [ -n "$POD7FILES" ]; then + for file in $POD7FILES; do + LOCAL=`basename $file` + # TRANSLATORS: $file contains the basename of the POD file + eval_gettext "Processing untranslated files for \$file (7) . . ."; echo + # shorten names that already contain the 7. + SHORT=`echo $LOCAL|cut -d'7' -f1|sed -e 's/\.$//'` + if [ -n "$SHORT" ]; then + pod2man -s 7 $file $BASEDIR/$POD/man/man7/${SHORT}.7 + else + pod2man -s 7 $file $BASEDIR/$POD/man/man7/${LOCAL}.7 + fi + done + fi + fi + done + if [ -n "$HTMLDIR" ]; then + xsltproc -o $BASEDIR/$d/$HTMLDIR/ --nonet $HTMLXSL $XMLDIR/$HTMLFILE + fi + for l in $LANGS; do + for P in $XMLPACKAGES; do + if [ $d = "$P" ]; then + for X in $XMLMAN1; do + if [ -f $XMLDIR/$l/$X ]; then + # TRANSLATORS: $l contains language code, $X contains the name of the manual page + eval_gettext "Processing \$l translations for \$X (1). . ."; echo + MANDIR=$BASEDIR/$P/man/$l/man1/ + XML_CATALOG_FILES="/etc/xml/catalog" \ + xsltproc -o $MANDIR --nonet $XSLFILE $XMLDIR/$l/$X + fi + done + for X3 in $XMLMAN3; do + if [ -f $XMLDIR/$l/$X3 ]; then + # TRANSLATORS: $l contains language code, $X3 contains the name of the manual page + eval_gettext "Processing \$l translations for \$X3 (3). . ."; echo + MANDIR=$BASEDIR/$P/man/$l/man3/ + XML_CATALOG_FILES="/etc/xml/catalog" \ + xsltproc -o $MANDIR --nonet $XSLFILE $XMLDIR/$l/$X3 + fi + done + fi + done + for POD in $PODPACKAGES; do + if [ $d = "$POD" ]; then + for file in $PODFILE; do + LOCAL=`basename $file` + if [ -f $BASEDIR/pod/1/$l/$LOCAL ]; then + # TRANSLATORS: $l contains language code, $file contains the basename of the POD file + eval_gettext "Processing \$l translations for \$file (1). . ."; echo + pod2man --utf8 -s 1 $BASEDIR/pod/1/$l/$LOCAL $BASEDIR/$POD/man/$l/man1/$LOCAL.1 + fi + done + fi + if [ -n "$PODMODULES" ]; then + for file in $PODMODULES; do + # a bit of sed magic to convert a path to a module name. + name=`echo $file| sed -e 's/^lib\///'|sed -e 's/\//::/g'|sed -e 's/\.pm$//'` + if [ -f $BASEDIR/pod/3/$l/$file ]; then + # TRANSLATORS: $l contains language code, $name contains the Perl module name + eval_gettext "Processing \$l translations for \$name (3). . ."; echo + pod2man --utf8 -n $name -s 3 $BASEDIR/pod/3/$l/$file $BASEDIR/$POD/man/$l/man3/$name.3 + fi + done + fi + if [ -n "$POD5FILES" ]; then + for file in $POD5FILES; do + LOCAL=`basename $file` + if [ -f $BASEDIR/pod/5/$l/$LOCAL ]; then + # TRANSLATORS: $l contains language code, $file contains the basename of the POD file + eval_gettext "Processing \$l translations for \$file (5). . ."; echo + # shorten names that already contain the 5. + SHORT=`echo $LOCAL|cut -d'5' -f1|sed -e 's/\.$//'` + if [ -n "$SHORT" ]; then + pod2man --utf8 -s 5 $BASEDIR/pod/5/$l/$LOCAL $BASEDIR/$POD/man/$l/man5/${SHORT}.5 + else + pod2man --utf8 -s 5 $BASEDIR/pod/5/$l/$LOCAL $BASEDIR/$POD/man/$l/man5/$LOCAL.5 + fi + fi + done + fi + if [ -n "$POD7FILES" ]; then + for file in $POD7FILES; do + LOCAL=`basename $file` + if [ -f $BASEDIR/pod/7/$l/$LOCAL ]; then + # TRANSLATORS: $l contains language code, $file contains the basename of the POD file + eval_gettext "Processing \$l translations for \$file (7). . ."; echo + # shorten names that already contain the 7. + SHORT=`echo $LOCAL|cut -d'7' -f1|sed -e 's/\.$//'` + if [ -n "$SHORT" ]; then + pod2man --utf8 -s 7 $BASEDIR/pod/7/$l/$LOCAL $BASEDIR/$POD/man/$l/man7/${SHORT}.7 + else + pod2man --utf8 -s 7 $BASEDIR/pod/7/$l/$LOCAL $BASEDIR/$POD/man/$l/man7/$LOCAL.7 + fi + fi + done + fi + done + if [ -n "$HTMLDIR" ]; then + mkdir -p $BASEDIR/$d/$HTMLDIR/$l/ + xsltproc -o $BASEDIR/$d/$HTMLDIR/$l/ --nonet $HTMLXSL $XMLDIR/$l/$HTMLFILE + fi + done + if [ -n "$HTMLDIR" ]; then + for i in `ls $BASEDIR/$d/$HTMLDIR/*.html`; do + iconv -t utf-8 -f iso8859-1 $i > $BASEDIR/$HTMLDIR/tmp + sed < $BASEDIR/$HTMLDIR/tmp > $i -e 's:charset=ISO-8859-1:charset=UTF-8:' + done + fi + if [ -n "$HTMLDIR" ]; then + rm -f $BASEDIR/$HTMLDIR/tmp + fi +done + +for l in $LANGS; do + rm -rf $XMLDIR/$l +done +rm -rf $BASEDIR/pod/ -- cgit v1.2.3