Detlef Riekenberg wrote:
[...]
This was an out of tree compilation, but with a not really useful
target-directory (sorry for that. I changed it already, because the
docs-makefile overwrites the wine makefile).
Ok. I have a patch that fixes the out-of-tree build issue. It relies on
a fix to po4a so it interprets the path to files included in Sgml as
relative to the directory of the master Sgml file. IOW, with this patch
when ../en/wineuser-guide.sgml includes wineusr-introduction.sgml we
look for ../en/wineuser-introduction.sgml (which is what the other Sgml
tools like docbook2html seem to do).
I have submitted the patch to the po4a folks and I'm hoping they will
commit it. I have also attached the patch to this email together with
the Makefile.in change for review.
--
Francois Gouget
fgouget@codeweavers.com
Index: fr/Makefile.in
===================================================================
RCS file: /cvsroot/wine/docs/fr/Makefile.in,v
retrieving revision 1.2
diff -u -p -r1.2 Makefile.in
--- fr/Makefile.in 18 May 2005 20:41:07 -0000 1.2
+++ fr/Makefile.in 24 May 2005 17:38:22 -0000
@@ -5,7 +5,6 @@ VPATH = @srcdir@
LANG = fr
SGMLDIR = $(TOPSRCDIR)/en
-DOCDIR = $(TOPSRCDIR)/fr
MIN_TRANS = 1
WINEFAQ_SRCS = \
@@ -22,10 +21,10 @@ all: doc
updatepo: $(ALLBOOKS:%=%.updatepo)
%.updatepo:
- cd $(SGMLDIR) && $(PO4AENV) perl $(PO4ADIR)/po4a-updatepo -f sgml -m $*.sgml -p $(DOCDIR)/$*.po
+ $(PO4AENV) perl $(PO4ADIR)/po4a-updatepo -f sgml -m $(SGMLDIR)/$*.sgml -p $(SRCDIR)/$*.po
%.posgml: $(SGMLDIR)/%.sgml %.po
- cd $(SGMLDIR) && $(PO4AENV) perl $(PO4ADIR)/po4a-translate -v -f sgml -m $*.sgml -p $(DOCDIR)/$*.po -l $(DOCDIR)/$*.posgml -k $(MIN_TRANS)
+ $(PO4AENV) perl $(PO4ADIR)/po4a-translate -v -f sgml -m $(SGMLDIR)/$*.sgml -p $(SRCDIR)/$*.po -l $*.posgml -k $(MIN_TRANS)
%.sgml: %.posgml
sed -e 's/^<(article .*) lang="en">$$/<\1 lang="$(LANG)">/' -e 's/^<(book .*) lang="en">$$/<\1 lang="$(LANG)">/' $*.posgml >$*.sgml || ($(RM) $*.sgml && false)
Index: po4a/lib/Locale/Po4a/Sgml.pm
===================================================================
RCS file: /cvsroot/wine/docs/po4a/lib/Locale/Po4a/Sgml.pm,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 Sgml.pm
--- po4a/lib/Locale/Po4a/Sgml.pm 14 May 2005 12:37:35 -0000 1.1.1.1
+++ po4a/lib/Locale/Po4a/Sgml.pm 24 May 2005 17:38:23 -0000
@@ -290,24 +291,24 @@ sub set_tags_kind {
# Do the actual work, using the SGMLS package and settings done elsewhere.
#
sub parse_file {
- my ($self,$filename)=@_;
+ my ($self,$mastername)=@_;
my ($prolog);
# Rewrite the file to:
# - protect optional inclusion marker (ie, "<![ %str [" and "]]>")
# - protect entities from expansion (ie "&release;")
- open (IN,"<$filename")
- || die wrap_mod("po4a::sgml", dgettext("po4a", "Can't open %s: %s"), $filename, $!);
+ open (IN,"<$mastername")
+ || die wrap_mod("po4a::sgml", dgettext("po4a", "Can't open %s: %s"), $mastername, $!);
my $origfile="";
while (<IN>) {
$origfile .= $_;
}
- close IN || die wrap_mod("po4a::sgml", dgettext("po4a", "Can't close %s: %s"), $filename, $!);
+ close IN || die wrap_mod("po4a::sgml", dgettext("po4a", "Can't close %s: %s"), $mastername, $!);
# Detect the XML pre-prolog
if ($origfile =~ s/^(\s*<?xml[^?]*?>)//) {
warn wrap_mod("po4a::sgml", dgettext("po4a",
"Trying to handle a XML document as a SGML one. ".
- "Feel lucky if it works, help us implementing a proper XML backend if it does not."), $filename)
+ "Feel lucky if it works, help us implementing a proper XML backend if it does not."), $mastername)
unless $self->verbose() <= 0;
$xmlprolog=$1;
}
@@ -442,8 +443,8 @@ sub parse_file {
my @lines = split(/\n/, $origfile);
print "XX Prepare reference indirection stuff\n" if $debug{'refs'};
for (my $i=1; $i<=scalar @lines; $i++) {
- push @refs,"$filename:$i";
- print "$filename:$i\n" if $debug{'refs'};
+ push @refs,"$mastername:$i";
+ print "$mastername:$i\n" if $debug{'refs'};
}
# protect the conditional inclusions in the file
@@ -465,6 +466,12 @@ sub parse_file {
my $key = $2;
my $filename=$3;
$prolog = $1.$4;
+ if ($filename !~ m%/%)
+ {
+ my $dir=$mastername;
+ $dir =~ s%/[^/]*$%%;
+ $filename="$dir/$filename";
+ }
(-e $filename && open IN,"<$filename") ||
die wrap_mod("po4a::sgml", dgettext("po4a", "Can't open %s (content of entity %s%s;): %s"),
$filename, '%', $key, $!);
@@ -517,6 +524,12 @@ sub parse_file {
my $key = $2;
my $filename = $3;
$searchprolog = $1.$4;
+ if ($filename !~ m%/%)
+ {
+ my $dir=$mastername;
+ $dir =~ s%/[^/]*$%%;
+ $filename="$dir/$filename";
+ }
$entincl{$key}{'filename'}=$filename;
# Preload the content of the entity
(-e $filename && open IN,"<$filename") ||
@@ -575,7 +589,7 @@ sub parse_file {
if ($debug{'refs'}) {
print "XX Resulting shifts\n";
for (my $i=0; $i<scalar @refs; $i++) {
- print "$filename:".($i+1)." -> $refs[$i]\n";
+ print "$mastername:".($i+1)." -> $refs[$i]\n";
}
}