I did get it working but with some "Dirty Fixes", by adding cast of "size_t" to a lot of code, but then I realised that there was a quicker fix..
Ref:
- https://lib.filezilla-project.org/
- https://filezilla-project.org/download.php Version 3.31, since Solaris 11.4 beta comes with wxWidgets 3.0.3 (Version 3.32 requires 3.0.4)
- can't build wxwidgets on Cygwin: ambiguous overload for ‘operator[]’ basedll_apebase.o error
- POSIX fcntl() should be used instead of flock() for setting file locking options, at least for SunOS
- wxWidgets: Should wxSIZE_T_IS_UINT not be defined in setup.h Pointed me in the right direction with 64bit versions
-
Unable to build with Solaris 11.4 since does not build with GCC 7.3 and wxWidgets 3.0.3. You need GCC 7.1 which was only available on 11.4 beta.
# pkg list library/graphics/wxwidgets library/icu gnutls-3 library/motif developer/gcc/gcc-c-7 developer/gcc/gcc-common-7 build/make gnu-tar gnu-make text/gnu-grep xdg/xdg-utils
NAME (PUBLISHER) VERSION IFO
archiver/gnu-tar 1.29-11.4.0.0.1.3.0 i--
desktop/xdg/xdg-utils 1.1.1-11.4.0.0.1.3.0 i--
developer/build/gnu-make 4.2.1-11.4.0.0.1.3.0 i--
developer/build/make 11.4-11.4.0.0.0.5.0 i--
developer/gcc/gcc-c-7 7.3.0-11.4.0.0.1.3.0 i--
developer/gcc/gcc-common-7 7.3.0-11.4.0.0.1.3.0 i--
library/gnutls-3 3.5.16-11.4.0.0.1.3.0 i--
library/graphics/wxwidgets 3.0.3-11.4.0.0.1.3.0 i--
library/icu 11.4-11.4.0.0.1.3.0 i--
library/motif 0.5.12-5.12.0.0.0.96.0 i--
text/gnu-grep 3.1-11.4.0.0.1.3.0 i--
Need to check PATH so that it adds 64bit "/usr/bin/64" binaries forgetting this may give you errors. For example we need "/usr/bin/64/wx-config" and NOT "/usr/bin/wx-config"
# echo $PATH
/usr/bin/64:/usr/bin:/usr/sbin:/usr/gnu/bin:/usr/local/bin
# bzip2 -dc libfilezilla-0.12.1.tar.bz2 | gtar xf -
# cd libfilezilla-0.12.1
# ./configure --prefix=/usr/local
# gmake
# gmake install
# cd ..
# bzip2 -dc FileZilla_3.31.0_src.tar.bz2 | gtar xf -
# cd filezilla-3.31.0
# export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/share/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig/gnutls-3
# ./configure --prefix=/usr/local CPPFLAGS="-I/usr/include/idn" LDFLAGS="-L/usr/lib/amd64/gnutls-3" --with-pugixml=builtin --enable-precomp
# gmake
...
If you get the following then you have an error in the above since you are using the wrong
include file "/usr/lib/wx/include/gtk2-unicode-3.0/wx/setup.h" where you should be
using "/usr/lib/amd64/wx/include/gtk2-unicode-3.0/wx/setup.h"
/usr/include/wx-3.0/wx/filename.h: In static member function ‘static wxUniChar wxFileName::GetPathSeparator(wxPathFormat)’:
/usr/include/wx-3.0/wx/filename.h:473:43: error: ambiguous overload for ‘operator[]’ (operand types are ‘wxString’ and ‘unsigned int’)
{ return GetPathSeparators(format)[0u]; }
^
/usr/include/wx-3.0/wx/filename.h:473:43: note: candidate: operator[](const char*, long int)
/usr/include/wx-3.0/wx/filename.h:473:43: note: candidate: operator[](const wchar_t*, long int)
In file included from /usr/include/wx-3.0/wx/memory.h:15:0,
from /usr/include/wx-3.0/wx/object.h:19,
from /usr/include/wx-3.0/wx/event.h:16,
from /usr/include/wx-3.0/wx/window.h:18,
from /usr/include/wx-3.0/wx/nonownedwnd.h:14,
from /usr/include/wx-3.0/wx/toplevel.h:20,
from /usr/include/wx-3.0/wx/dialog.h:14,
from /usr/include/wx-3.0/wx/msgdlg.h:18,
from msgbox.h:4,
from filezilla.h:6:
...
Overloading is a major problem and it normally means you are mixing data types. You will get the following error due to out of date code in putty.
uxshare.c: In function ‘platform_ssh_share’:
uxshare.c:301:9: warning: implicit declaration of function ‘flock’; did you mean ‘mlock’? [-Wimplicit-function-declaration]
if (flock(lockfd, LOCK_EX) < 0) {
^~~~~
mlock
uxshare.c:301:23: error: ‘LOCK_EX’ undeclared (first use in this function); did you mean ‘LOCK_HELD’?
if (flock(lockfd, LOCK_EX) < 0) {
^~~~~~
LOCK_HELD
uxshare.c:301:23: note: each undeclared identifier is reported only once for each function it appears in
Nearly there, but putty uses flock() instead of POSIX fcntl(). So a final fix:# diff src/putty/unix/uxshare.c src/putty/unix/uxshare.orig
270,277d269
< struct flock lock;
<
< lock.l_type = F_WRLCK;
< lock.l_whence = SEEK_SET;
< lock.l_start = 0;
< lock.l_len = 0;
<
309,313d300
< #ifdef __sun
< if (fcntl(lockfd, F_SETLK, &lock) == -1) {
< *logtext = dupprintf("%s: fcntl(F_SETLK): %s",
< lockname, strerror(errno));
< #else
317d303
< #endif
# gmake
# gmake install
# /usr/local/bin/filezilla -v
Reading locale option from /home/andrew/.config/filezilla/filezilla.xml
FileZilla 3.31.0, compiled on 2018-04-25
If you get an error "Failed to load module "canberra-gtk-module" then you are
missing the following package "desktop/xdg/libcanberra", which you can
install "pkg install desktop/xdg/libcanberra"
Final warning you may get a popup "assert "m_widget" failed in Show(): invalid frame" when running filezilla, but that is a know bug in wxWidgets but for some reason has not been included yet!
Anyway, it works.
No comments:
Post a Comment