New Ticket     Tickets     Wiki     Browse Source     Timeline     Roadmap     Ticket Reports     Search

Ticket #41241 (new defect)

Opened 21 months ago

Last modified 8 months ago

vxl fails to build on OS X 10.9 Mavericks

Reported by: andreas.schuh.84@… Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version: 2.2.1
Keywords: mavericks Cc: christian.frisson@…, mojca@…, rfabbri@…, garry@…
Port: vxl

Description

:info:build /Applications/Xcode.app/Contents/Developer/usr/bin/make -f core/vbl/tests/CMakeFiles/vbl_test_all.dir/build.make core/vbl/tests/CMakeFiles/vbl_test_all.dir/depend
:info:build In file included from /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_vxl/vxl/work/vxl-1.17.0/core/vul/vul_psfile.cxx:2:
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_vxl/vxl/work/vxl-1.17.0/core/vul/vul_psfile.h:40:28: error: cannot cast from type 'std::ofstream' (aka 'basic_ofstream<char>') to pointer type 'void *'
:info:build   operator bool() { return (void*)output_filestream!=(void*)0; }
:info:build                            ^~~~~~~~~~~~~~~~~~~~~~~~

When I change this line to

// or should this be !output_filestream.bad() && !output_filestream.fail() ?
return output_filestream.good()

it continues past this point but then I get the following error:

 cd /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_vxl/vxl/work/vxl-1.17.0/core/vbl/io/tests && /usr/bin/clang++   -DVXL_LEGACY_ERROR_REPORTING -DVXL_WARN_DEPRECATED -DVXL_WARN_DEPRECATED_ONCE -pipe -Os -Werror=gnu -Wno-error=vla -I/opt/local/include -arch x86_64   -DNDEBUG -arch x86_64 -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_vxl/vxl/work/vxl-1.17.0/vcl -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_vxl/vxl/work/vxl-1.17.0/core    -o CMakeFiles/vbl_io_test_all.dir/test_smart_ptr_io.o -c /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_vxl/vxl/work/vxl-1.17.0/core/vbl/io/tests/test_smart_ptr_io.cxx
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_vxl/vxl/work/vxl-1.17.0/core/vil/file_formats/vil_openjpeg.cxx:107:3: error: unknown type name 'opj_codec_t'; did you mean 'opj_poc_t'?
:info:build   opj_codec_t *codec_;
:info:build   ^~~~~~~~~~~

Attachments

Portfile (8.5 KB) - added by christian.frisson@… 16 months ago.
patch-fix-ffmpeg-support.diff (3.1 KB) - added by christian.frisson@… 16 months ago.
patch-fix-find-X11.diff (525 bytes) - added by christian.frisson@… 16 months ago.
patch-fix-include-openjpeg.diff (944 bytes) - added by christian.frisson@… 16 months ago.
Portfile-vxl.diff (8.0 KB) - added by christian.frisson@… 16 months ago.
patch-fix-ffmpeg-support.2.diff (3.8 KB) - added by andreas.schuh.84@… 8 months ago.
Fix FFMPEG API calls, requires FFMPEG >= lavf 53.25.0 / 53.17.0

Change History

comment:1 Changed 21 months ago by ryandesign@…

  • Keywords mavericks added; vxl, maverick, os x 10.9 removed
  • Summary changed from vxl fails to build on OS X 10.9 Maverick to vxl fails to build on OS X 10.9 Mavericks

Could you please report this problem to the developers of vxl so that they can fix it?

comment:2 Changed 21 months ago by andreas.schuh.84@…

I sent an email to the vxl-users list as they don't seem to use an issue tracker like Trac.

comment:3 follow-up: ↓ 10 Changed 21 months ago by andreas.schuh.84@…

For documentation, I managed to solve the openjpeg2 related 'unknown type name 'opj_codec_t' error as follows:

  • Set VXL_FORCE_V3P_OPENJPEG2 to ON
  • Add the following to core/vil/CMakeLists.txt around line 133 after all dependencies were looked for. Required because the more recent (incompatible) OpenJPEG2 header files were in the same MacPorts installation directory as other dependencies.
IF(NOT VXL_USING_NATIVE_OPENJPEG2)
  INCLUDE_DIRECTORIES(BEFORE ${OPENJPEG2_INCLUDE_DIR})
ENDIF()

Changed 16 months ago by christian.frisson@…

Changed 16 months ago by christian.frisson@…

Changed 16 months ago by christian.frisson@…

Changed 16 months ago by christian.frisson@…

comment:4 Changed 16 months ago by christian.frisson@…

Hi,

I could manage to make it work on OSX 10.9.2, attached are the modified Portfile and 3 diffs.

It uses a newer git revision from https://github.com/vxl/vxl rather than the release.

As mentioned in ticket #42872, using PortGroup cmake 1.0 in the Porfile has CMake automatically fed with too many (too early) includes of $prefix/include, what prevents the compilation of vxl against an internal openjpeg 2.x. This is an issue if for instance ffmpeg is installed, which currently depends on openjpeg15 which gets precedence in the included directories order, even if cmake command include_directories(BEFORE ...) is used as proposed by Andreas above. Adding

configure.cflags-delete ${configure.cppflags}
configure.cxxflags-delete ${configure.cppflags}

didn't work for me, so I uglily pasted the contents of ${prefix}/var/macports/sources/rsync.macports.org/release/tarballs/ports/_resources/port1.0/group/cmake-1.0.tcl, commenting out the configure.cppflags appends.

I'm not sure the cmake files are installed in the proper directory which is currently ${prefix}/share/vxl/cmake. For instance OpenCV doesn't have the trailing cmake subdir.

Best regards, Christian.

Last edited 12 months ago by ryandesign@… (previous) (diff)

comment:5 Changed 16 months ago by macsforever2000@…

Per the guidelines, please instead attach a unified diff of the Portfile so we can easily see what changes you are proposing.

Changed 16 months ago by christian.frisson@…

comment:6 Changed 16 months ago by christian.frisson@…

  • Cc christian.frisson@… added

Cc Me!

comment:7 Changed 16 months ago by christian.frisson@…

Hi,

I've just attached the unified diff of the Portfile.

Best regards, Christian

comment:8 Changed 16 months ago by mojca@…

  • Cc mojca@… added

Cc Me!

comment:9 Changed 14 months ago by rfabbri@…

  • Cc rfabbri@… added

Cc Me!

comment:10 in reply to: ↑ 3 Changed 14 months ago by rfabbri@…

Replying to andreas.schuh.84@…:

IF(NOT VXL_USING_NATIVE_OPENJPEG2)
  INCLUDE_DIRECTORIES(BEFORE ${OPENJPEG2_INCLUDE_DIR})
ENDIF()

I have VXL privileges to commit that change. And it solves my problem. Do you think I should just go ahead?

comment:11 Changed 12 months ago by mojca@…

The issue in the cmake PortGroup has been fixed. How does that affect vxl?

Last edited 12 months ago by mojca@… (previous) (diff)

comment:12 Changed 12 months ago by ryandesign@…

  • Cc garry@… added

Has duplicate #44539.

Changed 8 months ago by andreas.schuh.84@…

Fix FFMPEG API calls, requires FFMPEG >= lavf 53.25.0 / 53.17.0

comment:13 Changed 8 months ago by andreas.schuh.84@…

After running into this issue again after update to OS X 10.10 Yosemite, I stumbled upon this/my previous issue report. Applying the Portfile patch provided by Christian was unfortunately not sufficient due to some more FFMPEG API changes. I attached an updated FFMPEG support patch for VXL. After replacing Christian's patch by this file (i.e. "cp ~/Downloads/patch-fix-ffmpeg-support.2.diff​ $(port dir vxl)/files/patch-fix-ffmpeg-support.diff​"), the build of VXL succeeded using his patched Portfile. Thanks, Andreas.

Note: See TracTickets for help on using tickets.