Building Scan Tailor on OSX

Scan Tailor specific announcements, releases, workflows, tips, etc. NO FEATURE REQUESTS IN THIS FORUM, please.

Moderator: peterZ

Tulon
Posts: 687
Joined: 03 Oct 2009, 06:13
Number of books owned: 0
Location: London, UK
Contact:

Re: Building Scan Tailor on OSX

Post by Tulon »

Again, I am no expert on OSX dynamic linker, but on Linux, statically linking to those libraries wouldn't have helped. Linking them statically wouldn't prevent their symbols from being exported (from the scantailor executable) and therefore from being available for Qt to bind to.
Scan Tailor experimental doesn't output 96 DPI images. It's just what your software shows when DPI information is missing. Usually what you get is input DPI times the resolution enhancement factor.
User avatar
n9yty
Posts: 72
Joined: 25 Jul 2010, 22:13

Re: Building Scan Tailor on OSX

Post by n9yty »

I still do not believe it was the issue, but I suppose it could have been. If it were, wouldn't the errors in the crash dump have pointed to some function trying to actually utilize the library functions? It was crashing in the QEventLoop::exec method. I was puzzled by that, which is why I tried a different Qt (was going to compile my own next) because there was no trace of where or what it was doing that was causing it to die.

Also, the precompiled Qt libraries appear to be built so that they do not use the system imaging libraries, they use plugin modules named libqjpeg, libqtiff, etc (although no png unless the libqmng handles png too). At any rate, this also would avoid the above issue if I'm not mistaken.

Thanks again for your hard work, even though I haven't build a scanner yet (soon!) this will undoubtedly be extremely useful.
knappen
Posts: 35
Joined: 29 Jul 2010, 20:21

Re: Building Scan Tailor on OSX

Post by knappen »

Hi

With the new version, the program doesn't crash anymore when I run it on a mixed folder, but it seems that Scan Tailor can't quite grasp the png image, which is left with a question mark in "Select content/Margins". This of course means that one can't get to "Output" as the final size of pages isn't decided.
User avatar
n9yty
Posts: 72
Joined: 25 Jul 2010, 22:13

Re: Building Scan Tailor on OSX

Post by n9yty »

knappen wrote:when I run it on a mixed folder, but it seems that Scan Tailor can't quite grasp the png image, which is left with a question mark in "Select content/Margins". This of course means that one can't get to "Output" as the final size of pages isn't decided.
I just ran a batch on the PowerPC G4 system I have, running 10.5, and I cannot duplicate this. I will have to try it on a few other systems at work next week with different OS versions and Intel/PPC processors.
afdezc
Posts: 2
Joined: 04 Mar 2014, 00:53

Re: Building Scan Tailor on OSX

Post by afdezc »

I have followed the instructions to build Scan Tailor on OSX (I have Snow Leopard, 10.6.4) to the dot. I get a compiling error when I get to 83% and I can't get past that:

[ 83%] Building CXX object CMakeFiles/scantailor.dir/ProjectFilesDialog.cpp.o
/opt/local/include/boost/lambda/detail/function_adaptors.hpp: In static member function ‘static RET boost::lambda::function_adaptor<T Object::*>::apply(T Object::*, const Object&) [with RET = int&, Object = std::pair<int, int>, T = int]’:
/opt/local/include/boost/lambda/detail/actions.hpp:87: instantiated from ‘static RET boost::lambda::function_action<2, T>::apply(A1&, A2&) [with RET = int&, A1 = int std::pair<int, int>::* const, A2 = const std::pair<int, int>, T = boost::lambda::detail::unspecified]’
/opt/local/include/boost/lambda/detail/lambda_functor_base.hpp:424: instantiated from ‘RET boost::lambda::lambda_functor_base<boost::lambda::action<2, Act>, Args>::call(A&, B&, C&, Env&) const [with RET = int&, A = const std::pair<int, int>, B = const std::pair<int, int>, C = const boost::tuples::null_type, Env = const boost::tuples::null_type, Act = boost::lambda::function_action<2, boost::lambda::detail::unspecified>, Args = boost::tuples::tuple<int std::pair<int, int>::* const, const boost::lambda::lambda_functor<boost::lambda::placeholder<2> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>]’
/opt/local/include/boost/lambda/detail/select_functions.hpp:30: instantiated from ‘typename Arg::sig<boost::tuples::tuple<A&, B&, C&, Env&, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >::type boost::lambda::detail::select(const boost::lambda::lambda_functor<T>&, A&, B&, C&, Env&) [with Arg = boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<int std::pair<int, int>::* const, const boost::lambda::lambda_functor<boost::lambda::placeholder<2> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >, A = const std::pair<int, int>, B = const std::pair<int, int>, C = const boost::tuples::null_type, Env = const boost::tuples::null_type]’
/opt/local/include/boost/lambda/detail/operator_lambda_func_base.hpp:218: instantiated from ‘RET boost::lambda::lambda_functor_base<boost::lambda::relational_action<boost::lambda::less_action>, Args>::call(A&, B&, C&, Env&) const [with RET = bool, A = const std::pair<int, int>, B = const std::pair<int, int>, C = const boost::tuples::null_type, Env = const boost::tuples::null_type, Args = boost::tuples::tuple<boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<int std::pair<int, int>::* const, const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<int std::pair<int, int>::* const, const boost::lambda::lambda_functor<boost::lambda::placeholder<2> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>]’
/opt/local/include/boost/lambda/detail/lambda_functors.hpp:234: instantiated from ‘typename T::sig<boost::tuples::tuple<const A&, const B&, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >::type boost::lambda::lambda_functor<Base>::operator()(const A&, const B&) const [with A = std::pair<int, int>, B = std::pair<int, int>, T = boost::lambda::lambda_functor_base<boost::lambda::relational_action<boost::lambda::less_action>, boost::tuples::tuple<boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<int std::pair<int, int>::* const, const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<int std::pair<int, int>::* const, const boost::lambda::lambda_functor<boost::lambda::placeholder<2> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >]’
/usr/include/c++/4.2.1/bits/stl_algo.h:125: instantiated from ‘const _Tp& std::__median(const _Tp&, const _Tp&, const _Tp&, _Compare) [with _Tp = std::pair<int, int>, _Compare = boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::relational_action<boost::lambda::less_action>, boost::tuples::tuple<boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<int std::pair<int, int>::* const, const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<int std::pair<int, int>::* const, const boost::lambda::lambda_functor<boost::lambda::placeholder<2> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >]’
/usr/include/c++/4.2.1/bits/stl_algo.h:2795: instantiated from ‘void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = std::pair<int, int>*, _Size = long int, _Compare = boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::relational_action<boost::lambda::less_action>, boost::tuples::tuple<boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<int std::pair<int, int>::* const, const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<int std::pair<int, int>::* const, const boost::lambda::lambda_functor<boost::lambda::placeholder<2> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >]’
/usr/include/c++/4.2.1/bits/stl_algo.h:2866: instantiated from ‘void std::sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = std::pair<int, int>*, _Compare = boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::relational_action<boost::lambda::less_action>, boost::tuples::tuple<boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<int std::pair<int, int>::* const, const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, boost::lambda::lambda_functor<boost::lambda::lambda_functor_base<boost::lambda::action<2, boost::lambda::function_action<2, boost::lambda::detail::unspecified> >, boost::tuples::tuple<int std::pair<int, int>::* const, const boost::lambda::lambda_functor<boost::lambda::placeholder<2> >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> > >]’
/Users/anabeli/Downloads/scantailor-0.9.9.1/ProjectFilesDialog.cpp:703: instantiated from here
/opt/local/include/boost/lambda/detail/function_adaptors.hpp:264: error: invalid initialization of reference of type ‘int&’ from expression of type ‘const int’
make[2]: *** [CMakeFiles/scantailor.dir/ProjectFilesDialog.cpp.o] Error 1
make[1]: *** [CMakeFiles/scantailor.dir/all] Error 2
make: *** [all] Error 2

How can I fix this?
Many thanks,
Anabeli
Tulon
Posts: 687
Joined: 03 Oct 2009, 06:13
Number of books owned: 0
Location: London, UK
Contact:

Re: Building Scan Tailor on OSX

Post by Tulon »

It's an incompatibility with the latest boost. It's fixed in Git, so you can build that, or you can take just the file ProjectFilesDialog.cpp from there. I do plan to make a new release in the nearest future, so your third option would be waiting for that to happen. Oh, and the fourth one is to downgrade boost.
Scan Tailor experimental doesn't output 96 DPI images. It's just what your software shows when DPI information is missing. Usually what you get is input DPI times the resolution enhancement factor.
afdezc
Posts: 2
Joined: 04 Mar 2014, 00:53

Re: Building Scan Tailor on OSX

Post by afdezc »

Git worked fine. Thanks a lot!
Denivic
Posts: 13
Joined: 08 Nov 2010, 02:56
Number of books owned: 0
Country: USA
Location: Online
Contact:

Re: Building Scan Tailor on OSX

Post by Denivic »

Hey everyone, I am still making my rounds around these threads, so forgive me if i ask a redundant question. Can someone point me to the URL for Scan Tailor MAC version.

Thanks in advance,
User avatar
daniel_reetz
Posts: 2812
Joined: 03 Jun 2009, 13:56
E-book readers owned: Used to have a PRS-500
Number of books owned: 600
Country: United States
Contact:

Re: Building Scan Tailor on OSX

Post by daniel_reetz »

here's one version.
Denivic
Posts: 13
Joined: 08 Nov 2010, 02:56
Number of books owned: 0
Country: USA
Location: Online
Contact:

Re: Building Scan Tailor on OSX

Post by Denivic »

Thanks daniel I will try it out.
Post Reply