Error while "Building libfilezilla" for FileZilla compilation

Moderator: Project members

Post Reply
Message
Author
test
150 Opening data channel
Posts: 55
Joined: 2020-03-24 06:36

Error while "Building libfilezilla" for FileZilla compilation

#1 Post by test » 2020-04-01 10:26

Hi!

I am following https://wiki.filezilla-project.org/Comp ... er_Windows to compile FileZilla3 in my Windows system.

In MSYS2 MinGW-64 shell, everything works fine till Building wxWidgets

The steps for Building libfilezilla are:
cd ~
svn co https://svn.filezilla-project.org/svn/l ... illa/trunk libfilezilla
cd libfilezilla
autoreconf -i
./configure --prefix="$HOME/prefix" --enable-shared --disable-static
make && make install
When I execute make && make install command, after some time, I get the error:

Code: Select all

tls_layer_impl.cpp: In member function 'std::string fz::tls_layer_impl::get_key_exchange() const':
tls_layer_impl.cpp:1625:29: error: 'gnutls_group_get' was not declared in this scope; did you mean 'gnutls_mac_get'?
 1625 |   s = gnutls_group_get_name(gnutls_group_get(session_));
      |                             ^~~~~~~~~~~~~~~~
      |                             gnutls_mac_get
tls_layer_impl.cpp:1625:7: error: 'gnutls_group_get_name' was not declared in this scope; did you mean 'gnutls_ext_get_name'?
 1625 |   s = gnutls_group_get_name(gnutls_group_get(session_));
      |       ^~~~~~~~~~~~~~~~~~~~~
      |       gnutls_ext_get_name
make[1]: *** [Makefile:857: libfilezilla_la-tls_layer_impl.lo] Error 1
make[1]: Leaving directory '/c/Users/.../libfilezilla/lib'
make: *** [Makefile:485: all-recursive] Error 1
After some observations:

1) I found out the prototypes of these 4 functions at https://www.gnutls.org/manual/gnutls.html as follows:

a)
gnutls_group_get()
Function: gnutls_group_t gnutls_group_get (gnutls_session_t session)
session: is a gnutls_session_t type.

Returns the currently used group for key exchange. Only valid when using an elliptic curve or DH ciphersuite.

Returns: the currently used group, a gnutls_group_t type.

Since: 3.6.0
b)
gnutls_mac_get()
Function: gnutls_mac_algorithm_t gnutls_mac_get (gnutls_session_t session)
session: is a gnutls_session_t type.

Get the currently used MAC algorithm.

Returns: the currently used mac algorithm, a gnutls_mac_algorithm_t value.
c)
gnutls_group_get_name()
Function: const char * gnutls_group_get_name (gnutls_group_t group)
group: is an element from gnutls_group_t

Convert a gnutls_group_t value to a string.

Returns: a string that contains the name of the specified group or NULL .

Since: 3.6.0
d)
gnutls_ext_get_name()
Function: const char * gnutls_ext_get_name (unsigned int ext)
ext: is a TLS extension numeric ID

Convert a TLS extension numeric ID to a printable string.

Returns: a pointer to a string that contains the name of the specified cipher, or NULL
Since the functions a) & b) and c) & d) are different, so it would be probably meaningless to replace function a) with b) & c) with d)

2) Then I checked again on https://wiki.filezilla-project.org/Comp ... er_Windows under the part Building GnuTLS where it is mentioned as:

Code: Select all

wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.5/gnutls-3.5.19.tar.xz
So, as mentioned in the webpage, I had installed GnuTLS 3.5.19 but the libfilezilla C++ source file functions gnutls_group_get_name() & gnutls_group_get_name() are defined for GnuTLS 3.6.0.

Is there any fix so that I can compile this successfully?

Thanks!

User avatar
botg
Site Admin
Posts: 33171
Joined: 2004-02-23 20:49
First name: Tim
Last name: Kosse
Contact:

Re: Error while "Building libfilezilla" for FileZilla compilation

#2 Post by botg » 2020-04-02 08:24

You can safely use a higher GnuTLS version, GnuTLS 3.6.13 should work as well.

Also, a fix has been committed to the repository so that libfilezilla can again be compiled with GnuTLS 3.5.x

test
150 Opening data channel
Posts: 55
Joined: 2020-03-24 06:36

Re: Error while "Building libfilezilla" for FileZilla compilation

#3 Post by test » 2020-04-02 12:34

Thanks a lot! It worked!

Post Reply