-
-
Save mbklein/3349846 to your computer and use it in GitHub Desktop.
Patches to compile ocropus on Mac OSX 10.6 -- see explanation at NOTES.md at bottom https://gist.github.com/2919800#file_notes.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
+++ b/ocroinst.osx Tue Jun 12 18:25:15 2012 -0400 | |
@@ -0,0 +1,87 @@ | |
+#!/bin/bash | |
+ | |
+# Vaguely following ocroinst | |
+# Tested on Mac OSX 10.6 | |
+# Assume we're using Homebrew: http://mxcl.github.com/homebrew/ | |
+# Assume we're using pip, e.g. | |
+# https://github.com/mxcl/homebrew/wiki/Homebrew-and-Python | |
+# (I did this with Homebrew Python 2.7. I don't know whether system python | |
+# would work.) | |
+# Warning, I haven't tried running this whole thing at once, so a few small | |
+# things may be missing. | |
+ | |
+set -eux | |
+ | |
+## Prerequisities | |
+brew install scons libtiff jpeg sdl sdl_gfx sdl_image | |
+ | |
+## Build and install the components. | |
+## C++ libraries are installed into a Homebrew-friendly prefix, | |
+## then "brew link"'d. | |
+## Python extension are "pip install"'d. | |
+ | |
+cd iulib | |
+scons | |
+scons install | |
+brew link iulib | |
+cd .. | |
+ | |
+## Need a newer swig, apparently? | |
+## OSX 10.6's /usr/bin/swig is 1.3, seems to cause problems | |
+## Homebrew swig is currently 2.0.6 | |
+brew install swig | |
+ | |
+brew install tesseract | |
+ | |
+ | |
+cd iulib/pyswig | |
+python setup.py build | |
+pip install . | |
+cd ../.. | |
+ | |
+cd ocrolseg | |
+make | |
+python install . | |
+cd .. | |
+ | |
+cd ocrorast | |
+make | |
+python setup.py build_ext | |
+pip install . | |
+cd .. | |
+ | |
+cd ocropy | |
+pip install . | |
+cd .. | |
+ | |
+cd llpy | |
+pip install . | |
+cd .. | |
+ | |
+mkdir -p /usr/local/Cellar/ocropus/0.5 | |
+ | |
+cd ocrofst/oscrofstll | |
+scons | |
+scons install | |
+brew link ocropus | |
+cd ../.. | |
+ | |
+cd ocrofst | |
+python setup.py build | |
+pip install . | |
+ | |
+# Don't use Homebrew's current openfst formula because it's a too-new version. | |
+tar xf DIST/openfst-1.1.tar.gz | |
+cd openfst-1.1 | |
+./configure --prefix=/usr/local/Cellar/openfst/1.1 --disable-dependency-tracking | |
+make install | |
+brew switch openfst 1.1 | |
+cd .. | |
+ | |
+cd pyopenfst | |
+python setup.py build | |
+pip install . | |
+ | |
+ | |
+## Skipping FLANN for now | |
+ | |
====== DIRECTORY iulib | |
diff -r de8f89afa5e1 pyswig/setup.py | |
--- a/pyswig/setup.py Tue Jun 12 15:56:06 2012 -0400 | |
+++ b/pyswig/setup.py Tue Jun 12 18:25:15 2012 -0400 | |
@@ -1,19 +1,29 @@ | |
#!/usr/bin/env python | |
-import os | |
+import os, sys | |
from distutils.core import setup, Extension | |
from numpy.distutils.misc_util import get_numpy_include_dirs | |
baselibs = ['tiff','png','jpeg','SDL','SDL_gfx','SDL_image','m'] | |
include_dirs = ['/usr/local/include'] + get_numpy_include_dirs() | |
+ | |
+if sys.platform=='darwin': | |
+ include_dirs += ['hack'] | |
+ os.system("mkdir -p hack; touch hack/malloc.h") ## accomodate SWIG's lame #include <malloc.h> | |
+ | |
swig_opts = ["-c++"] + ["-I" + d for d in include_dirs] | |
swiglib = os.popen("swig -swiglib").read()[:-1] | |
+library_dirs = ['/usr/local/lib'] | |
+if sys.platform=='darwin': | |
+ library_dirs += ['/usr/X11/lib'] | |
+ | |
iulib = Extension('_iulib', | |
libraries = ['iulib']+baselibs, | |
swig_opts = swig_opts, | |
include_dirs = include_dirs, | |
+ library_dirs = library_dirs, | |
sources=['iulib.i']) | |
setup (name = 'iulib', | |
====== DIRECTORY llpy | |
====== DIRECTORY ocrofst | |
diff -r 329aed1e71ff ocrofstll/SConstruct | |
--- a/ocrofstll/SConstruct Mon May 14 11:44:03 2012 +0200 | |
+++ b/ocrofstll/SConstruct Tue Jun 12 18:25:16 2012 -0400 | |
@@ -51,7 +51,7 @@ | |
" -D__warn_unused_result__=__far__"+ | |
" -D_BACKWARD_BACKWARD_WARNING_H=1") | |
### path options | |
-opts.Add(PathVariable('prefix', 'The installation root for OCRopus ', "/usr/local")) | |
+opts.Add(PathVariable('prefix', 'The installation root for OCRopus ', "/usr/local/Cellar/ocropus/0.5")) | |
opts.Add(PathVariable('iulib', 'The installation root of iulib', "/usr/local")) | |
opts.Add(PathVariable('destdir', 'Destination root directory', "", PathVariable.PathAccept)) | |
#opts.Add(PathVariable('leptonica', 'The installation root of leptonica', "/usr/local")) #not required | |
@@ -205,22 +205,22 @@ | |
################################################################ | |
penv = env.Clone() | |
-penv.Append(LIBS=[File("libocrofst.so")]) | |
+penv.Append(LIBS=[File("libocrofst.dylib")]) | |
penv.Prepend(LINKFLAGS=["-ldl"]) | |
penv.Prepend(CPPPATH=["/usr/local/include"]) | |
-penv.Append(CCFLAGS=["-Xlinker","-rpath=${iulib}/lib"]) #not sure about these linkers?? | |
-penv.Append(LINKFLAGS=["-Xlinker","-rpath=${iulib}/lib"]) | |
+#penv.Append(CCFLAGS=["-Xlinker","-rpath=${iulib}/lib"]) #not sure about these linkers?? | |
+#penv.Append(LINKFLAGS=["-Xlinker","-rpath=${iulib}/lib"]) | |
#for is not needed? instead need to compile our main.cc file ?? | |
for cmd in glob('test-*.cc'): | |
- penv.Program(cmd,LIBS=File("libocrofst.so")) | |
+ penv.Program(cmd,LIBS=File("libocrofst.dylib")) | |
penv.Install(destdir+bindir,re.sub('.cc$','',cmd)) | |
#################################### | |
### To build test-fst | |
#################################### | |
penv1 = Environment() | |
-penv1.Prepend(LINKFLAGS=["/usr/local/lib/libfst.so","-ldl"]) | |
+penv1.Prepend(LINKFLAGS=["/usr/local/lib/libfst.dylib","-ldl"]) | |
penv1.Prepend(CPPPATH=["/usr/local/include"]) | |
''' | |
for cmd in glob('test-*.cc'): | |
diff -r 329aed1e71ff setup.py | |
--- a/setup.py Mon May 14 11:44:03 2012 +0200 | |
+++ b/setup.py Tue Jun 12 18:25:16 2012 -0400 | |
@@ -1,4 +1,4 @@ | |
-import os,glob | |
+import os,glob,sys | |
from distutils.core import setup, Extension | |
from numpy.distutils.misc_util import get_numpy_include_dirs | |
@@ -6,10 +6,18 @@ | |
baselibs = ['png','m'] | |
+library_dirs = [] | |
include_dirs = ['/usr/local/include'] + get_numpy_include_dirs() | |
+if sys.platform=='darwin': | |
+ library_dirs += ['/usr/X11/lib'] | |
+ include_dirs += ['/usr/X11/include'] | |
+ include_dirs += ['hack'] | |
+ os.system("mkdir -p hack; touch hack/malloc.h") ## accomodate SWIG's lame #include <malloc.h> | |
+ | |
swig_opts = ["-c++"] + ["-I" + d for d in include_dirs] | |
swiglib = os.popen("swig -swiglib").read()[:-1] | |
+ | |
scripts = ["ocrofst-search","ocropus-lalign","ocropus-lmodel"] | |
scripts += glob.glob("ocropus-lm-*[a-z]") | |
@@ -17,6 +25,7 @@ | |
libraries = ['iulib','ocrofst']+baselibs, | |
swig_opts = swig_opts, | |
include_dirs = include_dirs, | |
+ library_dirs = library_dirs, | |
extra_link_args = ["-L.","-Locrofstll/."], | |
sources = ['ocrofstll/ocrofstll.i']) | |
====== DIRECTORY ocrolseg | |
diff -r a1dc37915521 setup.py | |
--- a/setup.py Mon Mar 05 01:34:31 2012 +0100 | |
+++ b/setup.py Tue Jun 12 18:25:16 2012 -0400 | |
@@ -1,10 +1,15 @@ | |
#!/usr/bin/env python | |
-import os | |
+import os,sys | |
from distutils.core import setup, Extension | |
from numpy.distutils.misc_util import get_numpy_include_dirs | |
include_dirs = ['/usr/local/include'] + get_numpy_include_dirs() | |
+include_dirs = ['/usr/local/include'] + get_numpy_include_dirs() | |
+if sys.platform=='darwin': | |
+ include_dirs += ['hack'] | |
+ os.system("mkdir -p hack; touch hack/malloc.h") ## accomodate SWIG's lame #include <malloc.h> | |
+ | |
swig_opts = ["-c++"] + ["-I" + d for d in include_dirs] | |
ocrolseg = Extension('_ocrolseg', | |
====== DIRECTORY ocropy | |
diff -r 72d56fe2c4b9 ocropus | |
--- a/ocropus Sun Jun 03 02:19:53 2012 +0200 | |
+++ b/ocropus Tue Jun 12 18:25:16 2012 -0400 | |
@@ -1,4 +1,4 @@ | |
-#!/usr/bin/python | |
+#!/usr/bin/env python | |
### Simple command line tool driving the ocropus pipeline. | |
====== DIRECTORY ocrorast | |
====== DIRECTORY pyopenfst |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# HG changeset patch | |
# User Brendan O'Connor <[email protected]> | |
# Date 1339530966 14400 | |
# Node ID de8f89afa5e19450c3f7b6c028b2c57e0d5d2996 | |
# Parent b79bfb1a39fd8b07f153497dfeb02e4faa30cc93 | |
Compile on OSX 10.6 | |
diff -r b79bfb1a39fd -r de8f89afa5e1 SConstruct | |
--- a/SConstruct Thu May 10 16:16:25 2012 +0200 | |
+++ b/SConstruct Tue Jun 12 15:56:06 2012 -0400 | |
@@ -38,7 +38,12 @@ | |
opts = Variables('custom.py') | |
opts.Add('opt', 'Compiler flags for optimization/debugging', "-g -O3 -fPIC") | |
opts.Add('warn', 'Compiler flags for warnings', "-Wall -D__warn_unused_result__=__far__") | |
-opts.Add('prefix', 'The installation root for iulib', "/usr/local") | |
+if sys.platform=='darwin': | |
+ # Homebrew path; should make this a command-line option | |
+ prefix = '/usr/local/Cellar/iulib/0.4' | |
+else: | |
+ prefix = '/usr/local' | |
+opts.Add('prefix', 'The installation root for iulib', prefix) | |
opts.Add(BoolVariable('sdl', "provide SDL-based graphics routines", "yes")) | |
opts.Add(BoolVariable('vidio', "provide video I/O functionality", "no")) | |
@@ -47,7 +52,18 @@ | |
opts.Add(BoolVariable('test', "Run some tests after the build", "no")) | |
# opts.Add(BoolVariable('style', 'Check style', "no")) | |
-env = Environment(options=opts, CXXFLAGS=["${opt}","${warn}"]) | |
+if sys.platform=='darwin': | |
+ # /usr/X11 is pre-installed. /usr/local refers to Homebrew. | |
+ # BTO: scons has horrible documentation. had to read this to figure it out: | |
+ # http://mu2e.fnal.gov/public/hep/computing/scons.shtml | |
+ extra_args = dict( | |
+ CPPPATH=['/usr/X11/include', '/usr/local/include'], | |
+ LIBPATH=['/usr/X11/lib', '/usr/local/lib'], | |
+ ) | |
+else: | |
+ extra_args = {} | |
+ | |
+env = Environment(options=opts, CXXFLAGS=["${opt}","${warn}"], **extra_args) | |
Help(opts.GenerateHelpText(env)) | |
conf = Configure(env) | |
@@ -61,7 +77,14 @@ | |
assert conf.CheckLibWithHeader('png', 'png.h', 'C', 'png_byte;', 1),"please install: libpng12-dev" | |
assert conf.CheckLibWithHeader('jpeg', 'jconfig.h', 'C', 'jpeg_std_error();', 1),"please install: libjpeg62-dev" | |
-assert conf.CheckLibWithHeader('tiff', 'tiff.h', 'C', 'TIFFHeader;', 1), "please install: libtiff4-dev" | |
+if sys.platform=='darwin': | |
+ # BTO: It appears my libtiff 4.0.1 (from OSX Homebrew) does not have | |
+ # "TIFFHeader" but it does have TIFFHeaderCommon, TIFFHeaderClassic, and | |
+ # TIFFHeaderBig. Arbitrarily choosing one. | |
+ tiff_header_name = 'TIFFHeaderClassic;' | |
+else: | |
+ tiff_header_name = 'TIFFHeader;' | |
+assert conf.CheckLibWithHeader('tiff', 'tiff.h', 'C', tiff_header_name, 1), "please install: libtiff4-dev" | |
### check for optional parts | |
diff -r b79bfb1a39fd -r de8f89afa5e1 components/components.cc | |
--- a/components/components.cc Thu May 10 16:16:25 2012 +0200 | |
+++ b/components/components.cc Tue Jun 12 15:56:06 2012 -0400 | |
@@ -27,6 +27,13 @@ | |
#include "iulib.h" | |
#include "components.h" | |
+#ifdef __APPLE__ && __MACH__ | |
+// this issue was reported in 2009 and still not fixed... | |
+// http://code.google.com/p/ocropus/issues/detail?id=158 | |
+#include <crt_externs.h> | |
+#define environ (*_NSGetEnviron()) | |
+#endif | |
+ | |
using namespace colib; | |
namespace { | |
exporting patch: | |
<fdopen> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment