[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>
+
+-<<em>The directory where the pstoedit executable is located</em>>
++The default installation directory. If it fails, then <<em>The directory where the pstoedit executable is located</em>>
+ <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