You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@couchdb.apache.org by "Dave Cottlehuber (JIRA)" <ji...@apache.org> on 2012/05/23 01:04:41 UTC
[jira] [Commented] (COUCHDB-1482) Snappy NIF cannot be loaded on
Windows 2008 R2 x64 Server
[ https://issues.apache.org/jira/browse/COUCHDB-1482?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13281279#comment-13281279 ]
Dave Cottlehuber commented on COUCHDB-1482:
-------------------------------------------
It looks like the OTP build scripts are adding an unwanted helping hand again:
https://github.com/erlang/otp/blob/cfea5eea406ba3af96588ff458e55de9a149d9c5/erts/etc/win32/cygwin_tools/vc/cc.sh#L87-114
Interestingly the subsequent #L115-133 provide switches to undo *exactly* this issue. Clearly this is not the first time....
A fix for this is to add some OTP-specific directives into snappy/Makefile.am to undo the optimisations that cc.sh and ld.sh apply:
diff --git a/src/snappy/Makefile.am b/src/snappy/Makefile.am
index bca103b..18f47ec 100644
--- a/src/snappy/Makefile.am
+++ b/src/snappy/Makefile.am
@@ -56,7 +56,7 @@ snappy_nif_la_LDFLAGS = -module -avoid-version
if WINDOWS
snappy_nif_la_LDFLAGS += -no-undefined
-snappy_nif_la_CXXFLAGS += -EHsc
+snappy_nif_la_CXXFLAGS += -EHsc -mt -md -ml
SNAPPY_SO_NAME = snappy_nif.dll
else
SNAPPY_SO_NAME = snappy_nif.so
Increasing the optimisation level might also work. More testing reqd, &
hopefully get this down to just 1 additional flag here.
> Snappy NIF cannot be loaded on Windows 2008 R2 x64 Server
> ---------------------------------------------------------
>
> Key: COUCHDB-1482
> URL: https://issues.apache.org/jira/browse/COUCHDB-1482
> Project: CouchDB
> Issue Type: Bug
> Components: Build System
> Affects Versions: 1.2
> Environment: Windows 2008 R2 x64 Server but *not* any other Windows platform
> Reporter: Dave Cottlehuber
> Labels: windows
> Fix For: 1.2.1
>
>
> Initially it looks like there is a difference in how Windows resolves DLL dependencies for the required C++ runtimes. The snappy NIF is the only one with included C++ code, and it depends on both debug & release DLLs. On W2008R2 server this prevents loading, but on Windows 7 it does not.
> My eternal thanks go to Nick North for uncovering this gem.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira