[Bug 207697] editors/libreoffice4: fix build with boost 1.60

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Fri Mar 4 11:50:21 UTC 2016


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=207697

            Bug ID: 207697
           Summary: editors/libreoffice4: fix build with boost 1.60
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Keywords: needs-qa, patch
          Severity: Affects Some People
          Priority: ---
         Component: Individual Port(s)
          Assignee: office at FreeBSD.org
          Reporter: truckman at FreeBSD.org
            Blocks: 199601
          Assignee: office at FreeBSD.org
             Flags: maintainer-feedback?(office at FreeBSD.org)

Created attachment 167709
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=167709&action=edit
patch to unbreak editors/libreoffice4 when building with boost 1.60

The libreoffice4 build fails if the boost port is upgraded to version 1.60. 
The attached patch contains two sets of changes to fix this problem.  The first
part is the upstream commit 45dfbdca6a9afba1a6aef21623ec025ded635a4d.  The
other part is a small fragment of the upstream commit
e00a3a684e22f45f36b4002ce726cb2975cb36ae to add -DBOOST_ERROR_CODE_HEADER_ONLY
and -DBOOST_SYSTEM_NO_DEPRECATED to the compiler flags.

The upstream commit 45dfbdca6a9afba1a6aef21623ec025ded635a4d works with both
boost 1.60 as well as the current in-tree boost 1.55.  Unfortunately the other
change is not compatible with boost 1.55 for unknown reasons.

Without this second change, the build with boost 1.60 fails with this error:

[build LNK] StaticLibrary/libwriterperfect_importtestbase.a
/wrkdirs/usr/ports/editors/libreoffice4/work/libreoffice-4.3.7.2/workdir/LinkTarget/StaticLibrary/libpdfimport_s.a(pdfparse.o):
In function `global constructors keyed to a':
/wrkdirs/usr/ports/editors/libreoffice4/work/libreoffice-4.3.7.2/sdext/source/pdfimport/pdfparse/pdfparse.cxx:(.text+0x34c):
undefined reference to `boost::system::generic_category()'
/wrkdirs/usr/ports/editors/libreoffice4/work/libreoffice-4.3.7.2/sdext/source/pdfimport/pdfparse/pdfparse.cxx:(.text+0x358):
undefined reference to `boost::system::generic_category()'
/wrkdirs/usr/ports/editors/libreoffice4/work/libreoffice-4.3.7.2/sdext/source/pdfimport/pdfparse/pdfparse.cxx:(.text+0x364):
undefined reference to `boost::system::system_category()'
c++: error: linker command failed with exit code 1 (use -v to see invocation)
/wrkdirs/usr/ports/editors/libreoffice4/work/libreoffice-4.3.7.2/solenv/gbuild/LinkTarget.mk:444:
recipe for target
'/wrkdirs/usr/ports/editors/libreoffice4/work/libreoffice-4.3.7.2/workdir/LinkTarget/Executable/pdfunzip'
failed
gmake[2]: ***
[/wrkdirs/usr/ports/editors/libreoffice4/work/libreoffice-4.3.7.2/workdir/LinkTarget/Executable/pdfunzip]
Error 1


With this second change, the build with boost 1.59 fails with this error:

In file included from
/wrkdirs/usr/ports/editors/libreoffice4/work/libreoffice-4.3.7.2/sc/qa/unit/helper/qahelper.cxx:10:
In file included from
/wrkdirs/usr/ports/editors/libreoffice4/work/libreoffice-4.3.7.2/sc/qa/unit/helper/qahelper.hxx:14:
In file included from
/wrkdirs/usr/ports/editors/libreoffice4/work/libreoffice-4.3.7.2/sc/qa/unit/helper/debughelper.hxx:27:
In file included from /usr/local/include/mdds/mixed_type_matrix.hpp:33:
In file included from /usr/local/include/mdds/mixed_type_matrix_storage.hpp:39:
In file included from /usr/local/include/boost/pool/object_pool.hpp:18:
In file included from /usr/local/include/boost/pool/poolfwd.hpp:24:
In file included from /usr/local/include/boost/pool/detail/mutex.hpp:14:
In file included from /usr/local/include/boost/thread/mutex.hpp:16:
In file included from /usr/local/include/boost/thread/pthread/mutex.hpp:12:
In file included from /usr/local/include/boost/thread/exceptions.hpp:22:
In file included from /usr/local/include/boost/system/system_error.hpp:14:
/usr/local/include/boost/system/error_code.hpp:516:13: fatal error:
'boost/../libs/system/src/error_code.cpp' file not found
#   include <boost/../libs/system/src/error_code.cpp>
            ^

The problem is that error_code.hpp contains:

# ifdef BOOST_ERROR_CODE_HEADER_ONLY
#   include <boost/../libs/system/src/error_code.cpp>
# endif

and error_code.cpp is not installed.  I think this was fixed in boost 1.56.0.


For some unknown reason, editors/libreoffice which uses
-DBOOST_ERROR_CODE_HEADER_ONLY and -DBOOST_SYSTEM_NO_DEPRECATED does not suffer
this same fate.

Unfortunately I also haven't been able to think of a clean way of detecting the
boost version and tweaking the use of these flags to DTRT.


Referenced Bugs:

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=199601
[Bug 199601] devel/boost-all: Upgrade to 1.58, 1.59, or 1.60
-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-ports-bugs mailing list