[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57192] trunk/blender: Fix #35587: Cycles: image movie to single image crashing
Joshua Leung
aligorith at gmail.com
Mon Jun 3 04:56:32 CEST 2013
This commit seems to break compiling (or more precisely, linking) on
Win32 + scons + mingw.
Linking program ==> 'blender.exe'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../mingw32/bin/ld.exe:
cannot find -lz_st
collect2: ld returned 1 exit status
scons: *** [C:\blenderdev\b250\build\bin\blender.exe] Error 1
Specifically, we currently don't have a libz_st.a in libs yet. Trying
to rename libz.dll.a to libz_st.a results in a bunch of redefinition
errors (e.g. inflateReset in libz.a already defined in libz_st.a)
On Mon, Jun 3, 2013 at 3:02 AM, Sergey Sharybin <sergey.vfx at gmail.com> wrote:
>
> Revision: 57192
> http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57192
> Author: nazgul
> Date: 2013-06-02 15:02:17 +0000 (Sun, 02 Jun 2013)
> Log Message:
> -----------
> Fix #35587: Cycles: image movie to single image crashing
>
> Crash was happening on windows platforms only and was caused
> by some specifics about how CRT works.
>
> Basically, blender and all of the .dll are compiled with /MT
> flag, which means blender.exe and all .dll are using separate
> environments. This makes it impossible to pass file descriptors
> from blender to other dll, because it becomes invalid in the dll.
>
> And this is exactly what was happening: OIIO was trying to open
> movie file with all known plugins and one of them was zlib. And
> the way OIIO was using zlib API is opening the file using Boost
> and passing a file descriptor to zlib. And since zlib was a
> dynamic library this lead to general issues using this descriptor
> in zlib code.
>
> Solved by linking to zlib statically. This allows to safely pass
> file descriptor to zlib API. Alternative would be to compile all
> the stuff with /MD flag, but that's much bigger and less robust
> way to fix the issue.
>
> Tested on windows using msvc2008, scons plus cmake both 32 and 64
> bit versions. Seems to be working fine.
>
> Further tweaks for mingw and msvc2012 could be needed tho.
>
> Modified Paths:
> --------------
> trunk/blender/CMakeLists.txt
> trunk/blender/SConstruct
> trunk/blender/build_files/scons/config/linuxcross-config.py
> trunk/blender/build_files/scons/config/win32-mingw-config.py
> trunk/blender/build_files/scons/config/win32-vc-config.py
> trunk/blender/build_files/scons/config/win64-vc-config.py
> trunk/blender/build_files/scons/tools/Blender.py
> trunk/blender/source/creator/CMakeLists.txt
>
> Modified: trunk/blender/CMakeLists.txt
> ===================================================================
> --- trunk/blender/CMakeLists.txt 2013-06-02 14:56:04 UTC (rev 57191)
> +++ trunk/blender/CMakeLists.txt 2013-06-02 15:02:17 UTC (rev 57192)
> @@ -1088,11 +1088,7 @@
> set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
>
> set(ZLIB_INCLUDE_DIRS ${LIBDIR}/zlib/include)
> - if(CMAKE_CL_64)
> - set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/libz.lib)
> - else()
> - set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/zlib.lib)
> - endif()
> + set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/libz_st.lib)
>
> set(PTHREADS_INCLUDE_DIRS ${LIBDIR}/pthreads/include)
> set(PTHREADS_LIBRARIES ${LIBDIR}/pthreads/lib/pthreadVC2.lib)
>
> Modified: trunk/blender/SConstruct
> ===================================================================
> --- trunk/blender/SConstruct 2013-06-02 14:56:04 UTC (rev 57191)
> +++ trunk/blender/SConstruct 2013-06-02 15:02:17 UTC (rev 57192)
> @@ -910,7 +910,6 @@
> if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'win64-vc', 'linuxcross'):
> dllsources = []
>
> - dllsources += ['${BF_ZLIB_LIBPATH}/zlib.dll']
> # Used when linking to libtiff was dynamic
> # keep it here until compilation on all platform would be ok
> # dllsources += ['${BF_TIFF_LIBPATH}/${BF_TIFF_LIB}.dll']
>
> Modified: trunk/blender/build_files/scons/config/linuxcross-config.py
> ===================================================================
> --- trunk/blender/build_files/scons/config/linuxcross-config.py 2013-06-02 14:56:04 UTC (rev 57191)
> +++ trunk/blender/build_files/scons/config/linuxcross-config.py 2013-06-02 15:02:17 UTC (rev 57192)
> @@ -78,7 +78,7 @@
> WITH_BF_ZLIB = True
> BF_ZLIB = LIBDIR + '/zlib'
> BF_ZLIB_INC = '${BF_ZLIB}/include'
> -BF_ZLIB_LIB = 'libz'
> +BF_ZLIB_LIB = 'libz_st'
> BF_ZLIB_LIBPATH = '${BF_ZLIB}/lib'
>
> WITH_BF_INTERNATIONAL = True
>
> Modified: trunk/blender/build_files/scons/config/win32-mingw-config.py
> ===================================================================
> --- trunk/blender/build_files/scons/config/win32-mingw-config.py 2013-06-02 14:56:04 UTC (rev 57191)
> +++ trunk/blender/build_files/scons/config/win32-mingw-config.py 2013-06-02 15:02:17 UTC (rev 57192)
> @@ -78,7 +78,7 @@
> WITH_BF_ZLIB = True
> BF_ZLIB = LIBDIR + '/zlib'
> BF_ZLIB_INC = '${BF_ZLIB}/include'
> -BF_ZLIB_LIB = 'libz'
> +BF_ZLIB_LIB = 'libz_st'
> BF_ZLIB_LIBPATH = '${BF_ZLIB}/lib'
>
> WITH_BF_INTERNATIONAL = True
>
> Modified: trunk/blender/build_files/scons/config/win32-vc-config.py
> ===================================================================
> --- trunk/blender/build_files/scons/config/win32-vc-config.py 2013-06-02 14:56:04 UTC (rev 57191)
> +++ trunk/blender/build_files/scons/config/win32-vc-config.py 2013-06-02 15:02:17 UTC (rev 57192)
> @@ -82,7 +82,7 @@
> WITH_BF_ZLIB = True
> BF_ZLIB = LIBDIR + '/zlib'
> BF_ZLIB_INC = '${BF_ZLIB}/include'
> -BF_ZLIB_LIB = 'libz'
> +BF_ZLIB_LIB = 'libz_st'
> BF_ZLIB_LIBPATH = '${BF_ZLIB}/lib'
>
> WITH_BF_INTERNATIONAL = True
>
> Modified: trunk/blender/build_files/scons/config/win64-vc-config.py
> ===================================================================
> --- trunk/blender/build_files/scons/config/win64-vc-config.py 2013-06-02 14:56:04 UTC (rev 57191)
> +++ trunk/blender/build_files/scons/config/win64-vc-config.py 2013-06-02 15:02:17 UTC (rev 57192)
> @@ -78,7 +78,7 @@
> WITH_BF_ZLIB = True
> BF_ZLIB = LIBDIR + '/zlib'
> BF_ZLIB_INC = '${BF_ZLIB}/include'
> -BF_ZLIB_LIB = 'libz'
> +BF_ZLIB_LIB = 'libz_st'
> BF_ZLIB_LIBPATH = '${BF_ZLIB}/lib'
>
> WITH_BF_INTERNATIONAL = True
>
> Modified: trunk/blender/build_files/scons/tools/Blender.py
> ===================================================================
> --- trunk/blender/build_files/scons/tools/Blender.py 2013-06-02 14:56:04 UTC (rev 57191)
> +++ trunk/blender/build_files/scons/tools/Blender.py 2013-06-02 15:02:17 UTC (rev 57192)
> @@ -155,12 +155,12 @@
> libincs += Split(lenv['BF_OPENEXR_LIBPATH'])
> if lenv['WITH_BF_STATICOPENEXR']:
> statlibs += Split(lenv['BF_OPENEXR_LIB_STATIC'])
> + if lenv['WITH_BF_ZLIB'] and lenv['WITH_BF_STATICZLIB']:
> + statlibs += Split(lenv['BF_ZLIB_LIB_STATIC'])
> if lenv['WITH_BF_TIFF']:
> libincs += Split(lenv['BF_TIFF_LIBPATH'])
> if lenv['WITH_BF_STATICTIFF']:
> statlibs += Split(lenv['BF_TIFF_LIB_STATIC'])
> - if lenv['WITH_BF_ZLIB'] and lenv['WITH_BF_STATICZLIB']:
> - statlibs += Split(lenv['BF_ZLIB_LIB_STATIC'])
> if lenv['WITH_BF_FFTW3']:
> libincs += Split(lenv['BF_FFTW3_LIBPATH'])
> if lenv['WITH_BF_STATICFFTW3']:
> @@ -282,10 +282,10 @@
>
> if lenv['WITH_BF_OPENEXR'] and not lenv['WITH_BF_STATICOPENEXR']:
> syslibs += Split(lenv['BF_OPENEXR_LIB'])
> + if lenv['WITH_BF_ZLIB'] and not lenv['WITH_BF_STATICZLIB']:
> + syslibs += Split(lenv['BF_ZLIB_LIB'])
> if lenv['WITH_BF_TIFF'] and not lenv['WITH_BF_STATICTIFF']:
> syslibs += Split(lenv['BF_TIFF_LIB'])
> - if lenv['WITH_BF_ZLIB'] and not lenv['WITH_BF_STATICZLIB']:
> - syslibs += Split(lenv['BF_ZLIB_LIB'])
> if lenv['WITH_BF_FFMPEG'] and not lenv['WITH_BF_STATICFFMPEG']:
> syslibs += Split(lenv['BF_FFMPEG_LIB'])
> if lenv['WITH_BF_OGG']:
>
> Modified: trunk/blender/source/creator/CMakeLists.txt
> ===================================================================
> --- trunk/blender/source/creator/CMakeLists.txt 2013-06-02 14:56:04 UTC (rev 57191)
> +++ trunk/blender/source/creator/CMakeLists.txt 2013-06-02 15:02:17 UTC (rev 57192)
> @@ -538,23 +538,6 @@
> unset(_PYTHON_VERSION_NO_DOTS)
> endif()
>
> - if(CMAKE_CL_64)
> - # png is statically linked on win64
> - install(
> - FILES ${LIBDIR}/zlib/lib/zlib.dll
> - DESTINATION ${TARGETDIR}
> - )
> - else()
> - #not needed since we link statically, maybe also unneeded for MinGW?
> - if(NOT WITH_MINGW64)
> - install(
> - FILES
> - ${LIBDIR}/zlib/lib/zlib.dll
> - DESTINATION ${TARGETDIR}
> - )
> - endif()
> - endif()
> -
> if(MSVC)
> install(
> FILES ${LIBDIR}/pthreads/lib/pthreadVC2.dll
>
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
More information about the Bf-committers
mailing list