[liblouis-liblouisxml] Re: MacOS workflow for Braille

  • From: Greg Kearney <gkearney@xxxxxxxxx>
  • To: "liblouis-liblouisxml@xxxxxxxxxxxxx" <liblouis-liblouisxml@xxxxxxxxxxxxx>
  • Date: Thu, 15 May 2014 06:53:51 -0700

I donor see any issue with placing the precompiled binaries into /usr/local/ 
that is after all where the makefile puts them and is the Apple approved 
location for such items. A good many app bundle installers place things there. 
The one issue I have is that the tables really should be going into /Library/ 
someplace. 

Sent from my iPhone

Greg Kearney
Commonwealth Braille and Talking Book Cooperative

> On 15 May 2014, at 12:32 am, Bert Frees <bertfrees@xxxxxxxxx> wrote:
> 
> Again, personally I wouldn't make an installer that simply puts the files in 
> /usr/local/. Maybe it's just my imagination, but it feels wrong to me. It 
> would be good to know what others think about this?
> 
> First, I don't like software that just puts stuff in places I don't know 
> about, I like to be able to easily remove it whenever I want. Second, there 
> is no real reason it should be in /usr/local/, unless you are a developer or 
> you compiled the software yourself.
> 
> What I would do, and what I think is also the standard way to do these kind 
> of things on Mac OS, is to make an Application bundle (or in your case a 
> Service bundle) and include the required libraries and files in the bundle. 
> When running your Python script, point LD_LIBRARY_PATH to the directory of 
> your liblouis.dylib, PYTHONPATH to the directory of your Python bindings and 
> LOUIS_TABLEPATH to the directory of your UEBC table. (If you are planning to 
> use file2brl as well, but I don't think you are, you'll have to make some 
> additional precautions during the compilation to make sure the correct 
> libraries are found at runtime.)
> 
> Anyway, this just my opinion.
> 
> If you want to find out where "make install" installs all the files, just use 
> "./configure --prefix /any/path/you/want" and inspect that path.
> 
> @ David: Using MacPorts or Homebrew is indeed still asking too much of the 
> average user. Installing a Homebrew package is essentially the same as 
> downloading and compiling the source. (By the way, this is a Homebrew formula 
> for liblouis I made some time ago: 
> https://github.com/bertfrees/homebrew/commit/357174c443534166496398b1a31df9006e43b88c.)
> 
> Bert
> 
> 
> 2014-05-15 6:26 GMT+02:00 John J. Boyer <john.boyer@xxxxxxxxxxxxxxxxx>:
>> Greg,
>> 
>> You may get conflictging advice. From your previous messages it appears
>> that you have installed things in the default locations, which would be
>> /usr/local . The things you want are in the subdirectories of /usr/local
>> except for libxml2 . If you installed only liblouis and liblouisutdml
>> there you could just copy that directory and all its subdirectories and
>> files. It is important to maintain the directory structure. Otherwise
>> the libraries will be unable to find tables, configuration files, etc.
>> You will have to do something about libxml2. The best approach would be
>> to build it from source and make sure it installs in /usr/lolcal.
>> 
>> What I have said may not be completely accurate. Only someone who could look 
>> at your machine could be sure.
>> 
>> John
>> 
>> On Wed, May 14, 2014 at 01:22:07PM -0700, Greg Kearney wrote:
>> > What I would really like to do is to install all the binaries, support 
>> > files and libraries so that I have everyone in the right places in effect 
>> > I want to write and installer that will do what make install does.
>> 
>> >
>> > On May 14, 2014, at 1:01 PM, David Sweetman <david@xxxxxxxxxxxxxxxxx> 
>> > wrote:
>> >
>> > > I think you likely won’t want to have end-users building the library 
>> > > from source — though it may be simple to make a homebrew or macports 
>> > > installer (and it looks like a macports installer does exist, but it’s 
>> > > outdated at version 2.1.1), that's still probably asking a lot of the 
>> > > average user.
>> > >
>> > > I’ve never distributed a tool like this so I’m hazy on exactly what is 
>> > > required — but for liblouis, looking at the __init__.py created by 
>> > > python/setup.py, it appears the python binding makes use of the dynamic 
>> > > library ‘liblouis.2.dylib’, (line 65). So potentially all you need to do 
>> > > is somehow include that dylib for the python bindings to work. From the 
>> > > directory where you’ve build liblouis, if you run:
>> > >
>> > > find . | grep dylib
>> > >
>> > > It should return two results in the hidden .libs folder:
>> > >
>> > > ./liblouis/.libs/liblouis.2.dylib
>> > > ./liblouis/.libs/liblouis.dylib
>> > >
>> > > According to the README in the liblouis python directory, that dylib is 
>> > > expected to be in a standard install location, and I’m not really 100% 
>> > > clear on what that means in context of cdll loading it in the init 
>> > > script. Hopefully somebody else can advise on best-practice for what you 
>> > > want to do, but if you provide a dylib to end-users, you may have to 
>> > > find a way to somehow either tell python to look for the dylib where 
>> > > you’ve put it, or adjust __init__.py to use the full path to the dylib 
>> > > you’ve provided (again, that's just a hypothesis, it’s uncharted 
>> > > territory for me).
>> > >
>> > >
>> > > On May 14, 2014, at 10:58 AM, Greg Kearney <gkearney@xxxxxxxxx> wrote:
>> > >
>> > >> OK here is what I am working on which is why I needed to get liblouis 
>> > >> working in the first place.
>> > >>
>> > >> I have a system service for MacOS that will take the highlighted text 
>> > >> and translate it into contracted UEBC Braille and replace the selected 
>> > >> text with this translation. This is to be used mostly by sign writing 
>> > >> companies, Think of selected the text for a sign and getting back the 
>> > >> braille.
>> > >>
>> > >> Now for this to work I need to have a method of installing not only the 
>> > >> service but also libouis as well as to make sure the python binding get 
>> > >> activates, the translation is done in a python script. So now what I 
>> > >> need is a complete list of where everything get put when we do make 
>> > >> install so that I can go and copy all these files and build an 
>> > >> installer to put everything where it needs to be, run the python 
>> > >> setup.py script and have everything in place for the service.
>> > >>
>> > >> There is no way that any fellow in a sign shop or consumer end user of 
>> > >> this will ever understand the whole configure.make/make install 
>> > >> process. Further most will not have the developer tools installed to do 
>> > >> so.
>> > >>
>> > >> So can someone provide me with the paths and names of everything that 
>> > >> liblouis installs so that I can make up a way to install all of this?
>> > >>
>> > >> Thanks
>> > >>
> 

Other related posts: