Package: rubber
Version: 1.4-3
Followup-For: Bug #345954
Control: tags -1 + patch upstream

Hi.
The attached patch fixes the bug and adds some regression tests.
>From ca5dc664478e094577bf54b7897de8790bbed249 Mon Sep 17 00:00:00 2001
From: Nicolas Boulenguez <[email protected]>
Date: Wed, 1 Aug 2018 15:40:36 +0200
Subject: Always give a relative source path to fig2dev.

The source path is embedded by fig2dev into the target,
causing problem with LaTeX and non-ASCII characters.
Bug-Debian: https://bugs.debian.org/345954

diff --git a/src/converters/fig2dev.py b/src/converters/fig2dev.py
index 22f9838..27d5788 100644
--- a/src/converters/fig2dev.py
+++ b/src/converters/fig2dev.py
@@ -4,6 +4,7 @@
 Conversion of XFig graphics into various formats.
 """
 
+import os.path
 from rubber.util import prog_available
 from rubber.depend import Shell
 
@@ -11,6 +12,11 @@ def check (source, target, context):
 	return prog_available('fig2dev')
 
 def convert (source, target, context, set):
+
+	# The source path is embedded by fig2dev into the target,
+	# causing problem with LaTeX and non-ASCII characters.
+	# Always give a relative path.
+
 	if target[-2:] != '_t':
 
 		# Here we assume the target has an extension of a standard form, i.e.
@@ -20,7 +26,7 @@ def convert (source, target, context, set):
 		# used, that is for eps, pdf and png).
 
 		language = target[target.rfind('.')+1:]
-		result = Shell (set, ['fig2dev', '-L', language, source, target])
+		result = Shell (set, ['fig2dev', '-L', language, os.path.relpath (source), target])
 		result.add_product (target)
 		result.add_source (source)
 		return result
@@ -51,12 +57,12 @@ def convert (source, target, context, set):
 			language = 'pstex'
 			image_file = base_name + '.eps'
 
-		temp = Shell (set, ['fig2dev', '-L', language, source, image_file])
+		temp = Shell (set, ['fig2dev', '-L', language, os.path.relpath (source), image_file])
 		temp.add_product (image_file)
 		temp.add_source (source)
 
 		result = Shell (set, ['fig2dev', '-L', language + '_t',
-				      '-p', image_reference, source, target])
+				      '-p', image_reference, os.path.relpath (source), target])
 		result.add_product (target)
 		result.add_source (source)
 		result.add_source (image_file)
diff --git a/tests/fig2dev-path-inplace/doc.tex b/tests/fig2dev-path-inplace/doc.tex
new file mode 100644
index 0000000..fd63023
--- /dev/null
+++ b/tests/fig2dev-path-inplace/doc.tex
@@ -0,0 +1,6 @@
+\documentclass{article}
+\usepackage{graphics}
+\begin{document}
+Lorem
+\includegraphics{figure.eps}
+\end{document}
diff --git a/tests/fig2dev-path-inplace/figure.fig b/tests/fig2dev-path-inplace/figure.fig
new file mode 100644
index 0000000..ad23b7d
--- /dev/null
+++ b/tests/fig2dev-path-inplace/figure.fig
@@ -0,0 +1,10 @@
+#FIG 3.2  Produced by xfig version 3.2.5c
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4950 3675 456 456 4950 3675 4875 4125
diff --git a/tests/fig2dev-path-inplace/fragment b/tests/fig2dev-path-inplace/fragment
new file mode 100644
index 0000000..b304afd
--- /dev/null
+++ b/tests/fig2dev-path-inplace/fragment
@@ -0,0 +1,7 @@
+mkdir inplace
+mv doc.tex figure.fig inplace
+rubber --inplace         inplace/doc.tex
+[ -r inplace/figure.eps ]
+rubber --inplace --clean inplace/doc.tex
+mv inplace/doc.tex inplace/figure.fig .
+rmdir inplace
diff --git a/tests/fig2dev-path-into/doc.tex b/tests/fig2dev-path-into/doc.tex
new file mode 100644
index 0000000..fd63023
--- /dev/null
+++ b/tests/fig2dev-path-into/doc.tex
@@ -0,0 +1,6 @@
+\documentclass{article}
+\usepackage{graphics}
+\begin{document}
+Lorem
+\includegraphics{figure.eps}
+\end{document}
diff --git a/tests/fig2dev-path-into/figure.fig b/tests/fig2dev-path-into/figure.fig
new file mode 100644
index 0000000..ad23b7d
--- /dev/null
+++ b/tests/fig2dev-path-into/figure.fig
@@ -0,0 +1,10 @@
+#FIG 3.2  Produced by xfig version 3.2.5c
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4950 3675 456 456 4950 3675 4875 4125
diff --git a/tests/fig2dev-path-into/fragment b/tests/fig2dev-path-into/fragment
new file mode 100644
index 0000000..68ad3e5
--- /dev/null
+++ b/tests/fig2dev-path-into/fragment
@@ -0,0 +1,7 @@
+mkdir blarz
+rubber --into blarz doc.tex
+status=0
+grep fig2dev-path figure.eps || status=$?
+test $status = 1                # No match.
+rubber --into blarz doc.tex --clean
+rmdir blarz
diff --git a/tests/fig2dev-path/doc.tex b/tests/fig2dev-path/doc.tex
new file mode 100644
index 0000000..fd63023
--- /dev/null
+++ b/tests/fig2dev-path/doc.tex
@@ -0,0 +1,6 @@
+\documentclass{article}
+\usepackage{graphics}
+\begin{document}
+Lorem
+\includegraphics{figure.eps}
+\end{document}
diff --git a/tests/fig2dev-path/figure.fig b/tests/fig2dev-path/figure.fig
new file mode 100644
index 0000000..ad23b7d
--- /dev/null
+++ b/tests/fig2dev-path/figure.fig
@@ -0,0 +1,10 @@
+#FIG 3.2  Produced by xfig version 3.2.5c
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4950 3675 456 456 4950 3675 4875 4125
diff --git a/tests/fig2dev-path/fragment b/tests/fig2dev-path/fragment
new file mode 100644
index 0000000..b02d483
--- /dev/null
+++ b/tests/fig2dev-path/fragment
@@ -0,0 +1,5 @@
+rubber doc.tex
+status=0
+grep fig2dev-path figure.eps || status=$?
+test $status = 1                # No match.
+rubber doc.tex --clean

Reply via email to