[136715] trunk/dports/graphics/pstoedit

khindenburg at macports.org khindenburg at macports.org
Sun May 24 17:05:12 PDT 2015


Revision: 136715
          https://trac.macports.org/changeset/136715
Author:   khindenburg at macports.org
Date:     2015-05-24 17:05:12 -0700 (Sun, 24 May 2015)
Log Message:
-----------
pstoedit: add patch from OpenSUSE to find all the plugins #47354

Modified Paths:
--------------
    trunk/dports/graphics/pstoedit/Portfile

Added Paths:
-----------
    trunk/dports/graphics/pstoedit/files/patch-pkglibdir.diff

Modified: trunk/dports/graphics/pstoedit/Portfile
===================================================================
--- trunk/dports/graphics/pstoedit/Portfile	2015-05-24 22:36:25 UTC (rev 136714)
+++ trunk/dports/graphics/pstoedit/Portfile	2015-05-25 00:05:12 UTC (rev 136715)
@@ -5,6 +5,7 @@
 
 name                pstoedit
 version             3.70
+revision            1
 categories          graphics
 platforms           darwin
 maintainers         nomaintainer
@@ -29,7 +30,8 @@
 
 depends_run         port:ghostscript
 
-patchfiles          patch-src-cppcomp.h.diff
+patchfiles          patch-src-cppcomp.h.diff \
+                    patch-pkglibdir.diff
 
 configure.args      --without-emf \
                     --without-swf

Added: trunk/dports/graphics/pstoedit/files/patch-pkglibdir.diff
===================================================================
--- trunk/dports/graphics/pstoedit/files/patch-pkglibdir.diff	                        (rev 0)
+++ trunk/dports/graphics/pstoedit/files/patch-pkglibdir.diff	2015-05-25 00:05:12 UTC (rev 136715)
@@ -0,0 +1,180 @@
+Fix for pstoedit search for plugins.
+
+By default, pstoedit "make install" installs to PSTOEDITLIBDIR, so if
+nobody moves them to another location, then it is sufficient to search in
+PSTOEDITLIBDIR.
+
+
+But the way how pstoedit searches for plugins is broken:
+
+If pstoedit.reg does not exist or does not contain common/plugindir, then
+it tries $exepath/../lib/pstoedit, always sets pluginsloaded, and never
+tries PSTOEDITLIBDIR.
+
+If pstoedit.reg contains common/plugindir, then it tries that path,
+always sets pluginsloaded, and never tries PSTOEDITLIBDIR.
+
+=> The default installation directory is never tried, if it is not equal
+to one of above.
+
+
+The implementation has just another problem:
+
+If pstoedit.reg contains common/plugindir, and the directory defined
+there is equal to $pkglibdir, but the string is not literally
+"{expansion_of_bindir}/../lib/pstoedit", then plugins are loaded twice.
+So the check as it is makes only a little sense, because nobody would
+create ~/.pstoedit.reg containing:
+
+common/plugindir=/usr/bin/../lib/pstoedit
+
+
+The new implementation does things differently:
+
+If common/plugindir is defined, it checks only that directory.
+
+It swaps the check order: First checks whether PSTOEDITLIBDIR exists. If
+it exists, it skips blind attempts to find plugins.
+
+As PSTOEDITLIBDIR is always defined by makefile, the blind fallback will
+be attempted only in obscure environments.
+
+
+Index: pstoedit-3.70/src/pstoedit.cpp
+===================================================================
+--- src/pstoedit.cpp
++++ src/pstoedit.cpp
+@@ -30,6 +30,7 @@
+ #include I_string_h
+ 
+ #include <assert.h>
++#include <sys/stat.h>
+ 
+ #include "pstoeditoptions.h"
+ 
+@@ -261,33 +262,33 @@ static void loadpstoeditplugins(const ch
+ 		loadPlugInDrivers(plugindir.c_str(), errstream, verbose);	// load the driver plugins
+ 		pluginsloaded = true;
+ 	}
+-	// also look in the directory where the pstoedit .exe/dll was found
+-	char szExePath[1000];
+-	szExePath[0] = '\0';
+-	const unsigned long r = P_GetPathToMyself(progname, szExePath, sizeof(szExePath));
+-	if (verbose)  errstream << "pstoedit : path to myself:" << progname << " " << r << " " << szExePath<< endl;
+-	char *p = 0;
+-	if (r && (p = strrchr(szExePath, directoryDelimiter)) != 0) {
+-		*p = '\0';
+-		if (!strequal(szExePath, plugindir.c_str())) {
+-			loadPlugInDrivers(szExePath, errstream,verbose);
+-			pluginsloaded = true;
+-		}
+-	}
+-	// now try also $exepath/../lib/pstoedit
+-	strcat_s(szExePath,1000,"/../lib/pstoedit");
+-	if (!strequal(szExePath, plugindir.c_str())) {
+-    	loadPlugInDrivers(szExePath, errstream,verbose);
+-		pluginsloaded = true;
+-	}
+-
+ #ifdef PSTOEDITLIBDIR
+-	if (!pluginsloaded) {
++	struct stat s;
++	if (!pluginsloaded &&
++	    !stat(PSTOEDITLIBDIR, &s) &&
++	    S_ISDIR(s.st_mode)) {
+   	  // also try to load drivers from the PSTOEDITLIBDIR
+ 	  loadPlugInDrivers(PSTOEDITLIBDIR, errstream,verbose);
+ 	  pluginsloaded = true;
+ 	}
+ #endif
++	// If the above failed, also look in the directory where the pstoedit .exe/dll was found
++	if (!pluginsloaded) {
++	  char szExePath[1000];
++	  szExePath[0] = '\0';
++	  const unsigned long r = P_GetPathToMyself(progname, szExePath, sizeof(szExePath));
++	  if (verbose)  errstream << "pstoedit : path to myself:" << progname << " " << r << " " << szExePath<< endl;
++	  char *p = 0;
++	  if (r && (p = strrchr(szExePath, directoryDelimiter)) != 0) {
++		*p = '\0';
++		loadPlugInDrivers(szExePath, errstream,verbose);
++	  }
++	  // now try also $exepath/../lib/pstoedit
++	  strcat_s(szExePath,1000,"/../lib/pstoedit");
++	  if (!strequal(szExePath, plugindir.c_str())) {
++	  loadPlugInDrivers(szExePath, errstream,verbose);
++	  }
++	}
+ 
+ 	// delete[]plugindir;
+ }
+Index: pstoedit-3.70/doc/pstoedit.tex
+===================================================================
+--- doc/pstoedit.tex
++++ doc/pstoedit.tex
+@@ -352,7 +352,7 @@ If  the \Opt{-fontmap} option is not spe
+   \item MS Windows: The same directory where the \Prog{pstoedit} executable is located
+ 
+   \item Unix:\\
+-  $<$\emph{The directory where the pstoedit executable is located}$>$\verb+/../lib/+
++  The default installation directory. If it fails, then $<$\emph{The directory where the pstoedit executable is located}$>$\verb+/../lib/+
+ 
+ \end{itemize}
+ 
+Index: pstoedit-3.70/doc/pstoedit.1
+===================================================================
+--- pstoedit.1
++++ doc/pstoedit.1
+@@ -1,5 +1,5 @@
+ '\" t
+-.\" Manual page created with latex2man on Thu Jan  1 20:55:12 CET 2015
++.\" Manual page created with latex2man on Fri Mar 13 20:58:53 CET 2015
+ .\" NOTE: This file is generated, DO NOT EDIT.
+ .de Vb
+ .ft CW
+@@ -10,7 +10,7 @@
+ 
+ .fi
+ ..
+-.TH "PSTOEDIT" "1" "01 January 2015" "Conversion Tools " "Conversion Tools "
++.TH "PSTOEDIT" "1" "13 March 2015" "Conversion Tools " "Conversion Tools "
+ .SH NAME
+ 
+ pstoedit
+@@ -367,7 +367,7 @@ MS Windows: The same directory where the
+ .B *
+ Unix:
+ .br 
+-<\fIThe directory where the pstoedit executable is located\fP>
++The default installation directory. If it fails, then <\fIThe directory where the pstoedit executable is located\fP>
+ /../lib/ 
+ .RS
+ .PP
+Index: pstoedit-3.70/doc/pstoedit.htm
+===================================================================
+--- doc/pstoedit.htm
++++ doc/pstoedit.htm
+@@ -1,5 +1,5 @@
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+-<!-- Manual page created with latex2man on Thu Jan  1 20:55:13 CET 2015
++<!-- Manual page created with latex2man on Fri Mar 13 20:58:54 CET 2015
+ ** Author of latex2man: Juergen.Vollmer at informatik-vollmer.de
+ ** NOTE: This file is generated, DO NOT EDIT. -->
+ <html>
+@@ -9,7 +9,7 @@
+ PSTOEDIT 
+ </h1>
+ <h4 align=center>Dr. Wolfgang Glunz </h4>
+-<h4 align=center>01 January 2015</h4>
++<h4 align=center>13 March 2015</h4>
+ <h4 align=center>Version 3.70 </h4>
+ <tt>pstoedit</tt>
+ - a tool converting PostScript and PDF files into various 
+@@ -561,7 +561,7 @@ in the installation directory and uses t
+ </li>
+ <li>Unix:<br>
+  
+-&lt;<em>The directory where the pstoedit executable is located</em>&gt;
++The default installation directory. If it fails, then &lt;<em>The directory where the pstoedit executable is located</em>&gt;
+ <tt>/../lib/</tt> 
+ <p>
+ </li>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/macports-changes/attachments/20150524/8cfab240/attachment-0001.html>


More information about the macports-changes mailing list