<pre style='margin:0'>
Andrew Stromnov (stromnov) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/12d66c539cba67fa03c9559fb86798c7634b7d29">https://github.com/macports/macports-ports/commit/12d66c539cba67fa03c9559fb86798c7634b7d29</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 12d66c5  leptonica: fix for fstatat issue on 10.9 or lower
</span>12d66c5 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 12d66c539cba67fa03c9559fb86798c7634b7d29
</span>Author: Andrew Stromnov <stromnov@gmail.com>
AuthorDate: Sun Mar 18 10:46:41 2018 +0300

<span style='display:block; white-space:pre;color:#404040;'>    leptonica: fix for fstatat issue on 10.9 or lower
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/56083
</span>---
 graphics/leptonica/Portfile                        |   9 ++
 graphics/leptonica/files/patch-conf-fstatat.diff   | 134 +++++++++++++++++++++
 .../files/patch-fallback-fstatat-stat.diff         |  27 +++++
 3 files changed, 170 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/leptonica/Portfile b/graphics/leptonica/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index c500242..fa2bee7 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/graphics/leptonica/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/graphics/leptonica/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -20,6 +20,13 @@ master_sites        http://www.leptonica.com/source/
</span> checksums           rmd160  006ced964c7d9125c5b728bf8b717849c7dda21a \
                     sha256  a00f8fb06829ca6c8262bec8f78a6f985e049786f7c872a37b72fd7051ea087a
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# fstatat series:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#   - https://github.com/DanBloomberg/leptonica/issues/327
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#   - https://github.com/DanBloomberg/leptonica/pull/328
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#   - https://trac.macports.org/ticket/56083
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          patch-conf-fstatat.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-fallback-fstatat-stat.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> depends_build       port:pkgconfig
 
 depends_lib         port:tiff \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -30,6 +37,8 @@ depends_lib         port:tiff \
</span>                     port:giflib \
                     port:webp
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+use_autoreconf      yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> configure.args      --disable-silent-rules
 
 # ${prefix}/bin/fileinfo
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/leptonica/files/patch-conf-fstatat.diff b/graphics/leptonica/files/patch-conf-fstatat.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..01371c4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/graphics/leptonica/files/patch-conf-fstatat.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,134 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- README.html.old        2018-02-15 18:46:13.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ README.html    2018-03-18 01:21:37.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -499,7 +499,18 @@ that you are using the static makefiles 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    If you're building with the autoconf programs, these two functions are
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    automatically enabled if available.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-3. Typedefs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++3. Runtime functions not available on all platforms
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   Some functions are not available on all systems.  One example of such a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   function is fstatat().  If possible, such functions will be replaced by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   wrappers, stubs or behavioral equivalent functions.  By default, such
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   functions are disabled; enable them by setting #define HAVE_FUNC  1 (in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   environ.h).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   If you're building with the autoconf or cmake programs, these functions are
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   automatically enabled if available.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++4. Typedefs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    A deficiency of C is that no standard has been universally
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    adopted for typedefs of the built-in types.  As a result,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -542,7 +553,7 @@ that you are using the static makefiles 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    necessary we use the typedefs in stdint.h to specify the pointer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    size (either 4 or 8 byte).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-4. Compile-time control over stderr output (see environ.h)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++5. Compile-time control over stderr output (see environ.h)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    Leptonica provides both compile-time and run-time control over
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    messages and debug output (thanks to Dave Bryan).  Both compile-time
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -553,7 +564,7 @@ that you are using the static makefiles 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    NO_CONSOLE_IO is defined on the compile line.  For production code
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    where no output is to go to stderr, compile with -DNO_CONSOLE_IO.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-5. In-memory raster format (Pix)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++6. In-memory raster format (Pix)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    Unlike many other open source packages, Leptonica uses packed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    data for images with all bit/pixel (bpp) depths, allowing us
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -574,7 +585,7 @@ that you are using the static makefiles 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    and a DPix is provided for 2D arrays of doubles.  Converters
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    between these and the Pix are given.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-6. Conversion between Pix and other in-memory raster formats
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++7. Conversion between Pix and other in-memory raster formats
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  . If you use Leptonica with other imaging libraries, you will need
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    functions to convert between the Pix and other image data
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -583,7 +594,7 @@ that you are using the static makefiles 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    ordering and byte ordering on raster lines.  See the file pix.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    for the specification of image data in the pix.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-7. Custom memory management
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++8. Custom memory management
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    Leptonica allows you to use custom memory management (allocator,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    deallocator).  For Pix, which tend to be large, the alloc/dealloc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Only in leptonica-1.75.3: README.html.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- cmake/Configure.cmake.old      2017-11-03 19:35:52.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ cmake/Configure.cmake  2018-03-18 01:21:37.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -73,6 +73,7 @@ check_includes(include_files_list)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set(functions_list
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     fmemopen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    fstatat
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ check_functions(functions_list)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- configure.ac.old       2018-02-13 00:08:33.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ configure.ac   2018-03-18 01:21:37.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -223,6 +223,7 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM()],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Checks for library functions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AC_CHECK_FUNCS([fmemopen])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++AC_CHECK_FUNC([fstatat])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AC_CONFIG_FILES([Makefile src/endianness.h src/Makefile prog/Makefile lept.pc])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ AC_OUTPUT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- cppan.yml.old  2017-03-10 20:57:34.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ cppan.yml      2018-03-18 01:21:37.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -6,7 +6,9 @@ files:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ include_directories:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     public: src
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-check_function_exists: fmemopen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++check_function_exists:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  - fmemopen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  - fstatat
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ check_include_exists:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   - dlfcn.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/environ.h.old      2018-01-16 00:30:21.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/environ.h  2018-03-18 01:21:37.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -127,6 +127,15 @@ typedef uintptr_t l_uintptr_t;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define  HAVE_FMEMOPEN    1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif  /* ! HAVE_CONFIG_H etc. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * fstatat() is defined by POSIX, but some systems do not support it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * One example is older macOS systems (pre-10.10).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Play it safe and set the default value to 0.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if !defined(HAVE_CONFIG_H)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define  HAVE_FSTATAT     0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif /* ! HAVE_CONFIG_H */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /*--------------------------------------------------------------------*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/makefile.static.old        2018-02-13 02:40:04.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/makefile.static    2018-03-18 01:21:37.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -49,6 +49,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #   The default is not to use, because they only work on linux.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #   To use these, #define HAVE_FMEMOPEN to 1 in environ.h.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#   Customization for POSIX-compliant function fstatat().
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#   The default is not to use, because some systems do not
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#   support it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#   To use this, #define HAVE_FSTATAT to 1 in environ.h.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #   Customization for Cygwin:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #   (1) Use the appropriate $CC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- sw.cpp.old     2017-11-20 18:50:09.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ sw.cpp 2018-03-18 01:21:37.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -56,6 +56,7 @@ void check(Checker &c)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     auto &s = c.addSet("leptonica");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     s.checkFunctionExists("fmemopen");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    s.checkFunctionExists("fstatat");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     s.checkIncludeExists("dlfcn.h");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     s.checkIncludeExists("inttypes.h");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     s.checkIncludeExists("memory.h");
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/leptonica/files/patch-fallback-fstatat-stat.diff b/graphics/leptonica/files/patch-fallback-fstatat-stat.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..e7bb2e9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/graphics/leptonica/files/patch-fallback-fstatat-stat.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,27 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/sarray1.c.old      2018-01-31 16:57:06.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/sarray1.c  2018-03-18 01:22:45.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1855,7 +1855,7 @@ l_int32         len;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ SARRAY         *safiles;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DIR            *pdir;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct dirent  *pdirentry;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-int             dfd;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int             dfd, stat_ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct stat     st;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     PROCNAME("getFilenamesInDirectory");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1871,9 +1871,14 @@ struct stat     st;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     safiles = sarrayCreate(0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     dfd = dirfd(pdir);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     while ((pdirentry = readdir(pdir))) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if HAVE_FSTATAT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      stat_ret = fstatat(dfd, pdirentry->d_name, &st, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      stat_ret = stat(pdirentry->d_name, &st);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         /* It's nice to ignore directories.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      if ((0 == fstatat(dfd, pdirentry->d_name, &st, 0))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      if ((0 == stat_ret)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           && S_ISDIR(st.st_mode)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             continue;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span></pre><pre style='margin:0'>

</pre>