Windows Libraries
This article documents how some of our Windows library dependencies are updated.
https
links to the current libraries are available in the WSDG
: Chapter 5. Library Reference.
Note that many of our libraries are built using vcpkg. See .gitlab-ci.yml
in the wireshark-vcpkg-scripts for details.
Packaging notes
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:
Checklist:
-
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 incmake/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.
Other commands
-
Display the last ten changes including their paths:
svn log -vl10
-
Display all tags:
svn ls ^/tags
Imported from https://wiki.wireshark.org/Development/WindowsLibs on 2020-08-11 23:13:25 UTC