[Hamlib-developer] WSJT-X build error with latest hamlib version
Library to control radio transceivers and receivers
Brought to you by:
n0nb
|
From: Uwe, D. <dg...@gm...> - 2025-08-03 18:56:50
|
Hi Nate, George, Roger and all,
Okay, let me summarize again the current situation:
Today I noticed that the latest *Hamlib v4.7 is no longer* (fully)
*compatible with WSJT-X*. *This is a severe issue* for us, especially
since a new v3.0.0 is planned soon! The problems result from the
following two changes in Hamlib:
*1. Hamlib commit 20eeb96:*
These changes lead to an incompatibility with WSJTX module
HamlibTransceiver.cpp. On my Linux MInt 22.1 machine, it leads to the
following compilation error:
[ 82%] Built target jt9
[ 82%] Building CXX object
CMakeFiles/wsjt_qt.dir/Transceiver/HamlibTransceiver.cpp.o
/home/uwe/jt/wsjtx/Transceiver/HamlibTransceiver.cpp: In member function
‘QByteArray HamlibTransceiver::impl::get_conf(const char*)’:
/home/uwe/jt/wsjtx/Transceiver/HamlibTransceiver.cpp:336:33: error: ‘int
rig_get_conf(RIG*, hamlib_token_t, char*)’ is deprecated
[-Werror=deprecated-declarations]
336 | error_check (rig_get_conf (rig_.data (), token,
value.data ()), tr ("getting a configuration item"));
| ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from
/home/uwe/jt/wsjtx/Transceiver/HamlibTransceiver.cpp:15:
/home/uwe/jt/hamlib/include/hamlib/rig.h:2971:1: note: declared here
2971 | rig_get_conf HAMLIB_PARAMS((RIG *rig,
| ^~~~~~~~~~~~
Changing rig_get_conf to rig_get_conf2 in HamlibTransceiver.cpp doesn't
fix it, and changing the entire code would lead to loosing backwards
compatibility. Keep in mind, that it must also work with macOS,
Raspberry Pi 32-bit/64-bit, etc., and that not all these systems offer
the latest hamlib versions. Thus, loosing backwards compatibility would
end up in a mess!
Compilation worked when I disabled the (red) line 336 in
HamlibTransceiver.cpp, however, at best, it's a poor workaround. And who
knows how it will behave on other operating systems when this line is
disabled.
QByteArray HamlibTransceiver::impl::get_conf (char const * item)
{
token_t token = rig_token_lookup (rig_.data (), item);
QByteArray value {128, '\0'};
if (RIG_CONF_END != token) // only get if valid for rig model
{
// error_check (rig_get_conf (rig_.data (), token, value.data ()),
tr ("getting a configuration item"));
}
return value;
}
*
2. Nate's changes to his build environment.*
Over the past few years, I have always used the binaries from
https://n0nb.users.sourceforge.net/ to create the official Windows
packages for WSJT-X and WSJT-X Improved. However, this no longer works
because Hamlib can no longer be found with the module provided for this
purpose in WSJT-X (/CMake/Modules/FindHamlib.cmake). That's very bad!
All works well immediately if I go back to Hamlib 4.6.3.
CMake Error at CMake/Modules/LibFindMacros.cmake:263 (message):
REQUIRED PACKAGE NOT FOUND
We only found some files of Hamlib, not all of them. Perhaps your
installation is incomplete or maybe we just didn't look in the right
place?
This package is REQUIRED and you need to install it or adjust CMake
configuration in order to continue building wsjtx.
Relevant CMake configuration variables:
Hamlib_INCLUDE_DIR=C:/JTSDK64-Tools/tools/hamlib/qt/5.12.12/include
Usb_INCLUDE_DIR=C:/JTSDK64-Tools/tools/libusb/1.0.24/include/libusb-1.0
Hamlib_LIBRARY=<not found>
Usb_LIBRARY=C:/JTSDK64-Tools/tools/hamlib/qt/5.12.12/bin/libusb-1.0.dll
You may use CMake GUI, cmake -D or ccmake to modify the values. Delete
CMakeCache.txt to discard all values and force full re-detection if
necessary.
Call Stack (most recent call first):
CMake/Modules/FindHamlib.cmake:23 (libfind_process)
CMakeLists.txt:1009 (find_package)
But also here: Any changes to the code used for years in WSJT-X will
most likely lead to chaos, because of the many OS and GCC versions the
users have, if we loose backwards compatibility.
For testing purposes, I just compiled 64-bit binaries of the latest
Hamlib source code myself using the JTDSK64 kit. This worked and I was
able to compile WSJT-X 3.0.0 with it on Windows. At least that's
something. Strangely enough, the compilation error I encountered with
Linux did not occur there. But that shows us how different it can be. I
don't want to be confronted with hundreds of complaints from all those
people with their various RPi OSs or the different x86_64 or M1/M2/M3
variants of macOS!
But I also need 32-bit binaries for the 32-bit versions of WSJT-X and
WSJT-X Improved. Unfortunately, compiling with my JTSDK always leads to
errors when trying to compile 32-bit Hamlib binaries. It was so nice
that we could always use the reliable binaries from the
https://n0nb.users.sourceforge.net/ site. It would be very disappointing
if that were no longer possible in the future. This complicates every
new version of WSJT-X.
*I sincerely hope that solutions can be found for the problems
identified.* I would really regret it if Hamlib were no longer
considered reliable enough in the future. Then we would have to
completely change course for WSJT-X in the long term when it comes to
CAT control.
I would also greatly appreciate it if such serious changes in Hamlib
were coordinated with us WSJT-X developers beforehand. The repeated
Hamlib problems of recent years have already severely damaged its
reputation in the eyes of many. Of course, we always tried to argue it
away objectively. Unfortunately, there are few to no alternatives on
Linux and macOS. Therefore, I repeat my request: Please resolve these
issues so that WSJT-X can continue to use Hamlib for CAT control of the
rigs in the future.
73 de DG2YCB,
Uwe
________________________________________
German Amateur Radio Station DG2YCB
Dr. Uwe Risse
eMail: dg...@gm...
Info: www.qrz.com/db/DG2YCB
Am 03.08.2025 um 19:24 schrieb Nate Bargmann:
> * On 2025 03 Aug 08:01 -0500, DG2YCB, Uwe wrote:
>> Hi Roger, hi Nate,
>>
>> I have just tried to build WSJT-X on Linux with the latest Hamlib version
>> 4.7~git-20250803-989623ec5, but it resulted in the build error listed below.
>> It builds fine with Hamlib 4.6.3. Any idea where this new compilation error
>> comes from?
>>
>> @Nate: Has anything been changed in Hamlib in this regard? Because we don't
>> have anything changed in our WSJT-X code regarding Hamlib.
> Yes, this commit by George:
>
> https://github.com/Hamlib/Hamlib/commit/20eeb96787a1e2dd67e158b52337f64ab47517e7
>
> This is in reference to Issue #924
>
> https://github.com/Hamlib/Hamlib/issues/924
>
>
> Finally, please do not email me only on questions like these. Such
> questions should be posted toh...@li...
> that way all developers can be involved. Unfortunately, I now have a
> long thread in my mail box with questions I'm unable to answer directly
> so get get suitable answers this should be reposted to our mailing list.
>
> Thank you.
>
> 73, Nate
>
|