This article documents how to update library dependencies for Windows.
C++ libraries (such as Qt) are highly dependent on the MSVC runtime (MSVCRT) version and require separate packages for each MSVC compiler version.
Many libraries (including GnuTLS, Gcrypt, libssh) are cross-compiled with MinGW on Linux. Where possible, try to reuse packages from other trusted projects such as OpenSUSE or Debian.
At minimum a library package should contain header files, runtime libraries (.dll) and import libraries (.lib).
Do not use the MinGW .dll.a file, these are not compatible with MSVC. One .dll.a appears to work, but multiple .dll.a libraries results in a cryptic runtime error. Instead create a new import library with either:
- Have you create a subdirectory, named after the zip file?
Are .lib and .dll files included in the bin directory?
- Are .dll files stripped? (Optional if it does not save much)
Are header files included in the include directory?
Does the directory with .dll files match the <name>_DLL_DIR variable in cmake/modules/Find<name>.cmake?
Procedure for updating libraries
First time: make a local copy of the repositories:
svn checkout svn+ssh://svn.wireshark.org/svn/wireshark-win32-libs/trunk wireshark-win32-libs-trunk svn checkout svn+ssh://svn.wireshark.org/svn/wireshark-win64-libs/trunk wireshark-win64-libs-trunk
Add a single package (repeat this for both repos as needed):
Update existing copies: svn up
- Update README.txt in the top-level directory.
svn add packages/<package>-<version>.zip
svn commit -m "Update <package> to <version>"
Once you are ready to publish a tagged version of all packages. Tag name convention: yyyy-mm-dd. Example:
# Repeat this for both the 32-bit and 64-bit repo as needed. svn copy -m "Create a tag for <package> <version>" ^/trunk ^/tags/2018-08-03
Historical note: In the past, a separate trunk-A.B existed for master-A.B and tags were named like yyyy-mm-dd-A.B. Now that they are combined, it is possible to reuse the same date tag across branches.
Finally update tools/win-setup.ps1 in the appropriate git branches.
Display the last ten changes including their paths: svn log -vl10
Display all tags: svn ls ^/tags