Opened 16 years ago

Closed 16 years ago

Last modified 11 years ago

#3803 closed Bug report (fixed)

FileZilla 3.1.3 fails to build on Solaris(Nevada b98)

Reported by: Alfred Peng Owned by: Tim Kosse
Priority: normal Component: FileZilla Client
Keywords: Cc:
Component version: Operating system type: Other
Operating system version:

Description

FileZilla 3.1.3 fails to build on Solaris. The error messages are as below:

  1. pkgbuild: /usr/bin/CC -DHAVE_CONFIG_H -I. -I../../src/include -I./../include -I/usr/include -I/usr/include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -DWXGTK -I/usr/include -I/usr/include/idn -c -o libengine_a-directorylistingparser.o test -f 'directorylistingparser.cpp' || echo './'directorylistingparser.cpp

pkgbuild: "../../src/include/engineprivate.h", line 66: Warning: extra ";" ignored.
pkgbuild: "directorylisting.cpp", line 412: Error: Could not find a match for std::multimap<wxString, unsigned, std::less<wxString>, std::allocator<std::pair<const wxString, unsigned>>>::insert(std::pair<wxString, unsigned>) needed in CDirectoryListing::FindFile_CmpCase(const wxString&) const.
pkgbuild: "directorylisting.cpp", line 442: Error: Could not find a match for std::multimap<wxString, unsigned, std::less<wxString>, std::allocator<std::pair<const wxString, unsigned>>>::insert(std::pair<wxString, unsigned>) needed in CDirectoryListing::FindFile_CmpNoCase(wxString) const.
pkgbuild: 2 Error(s) and 1 Warning(s) detected.

  1. pkgbuild: "local_filesys.cpp", line 158: Warning: dir hides CLocalFileSystem::dir.

pkgbuild: "local_filesys.cpp", line 168: Warning: file hides CLocalFileSystem::file.
pkgbuild: "local_filesys.cpp", line 366: Error: NAME_MAX is not defined.
pkgbuild: "local_filesys.cpp", line 439: Error: DT_LNK is not defined.
pkgbuild: "local_filesys.cpp", line 439: Error: d_type is not a member of dirent.
pkgbuild: "local_filesys.cpp", line 446: Error: DT_DIR is not defined.
pkgbuild: "local_filesys.cpp", line 446: Error: d_type is not a member of dirent.
pkgbuild: "local_filesys.cpp", line 517: Error: DT_LNK is not defined.
pkgbuild: "local_filesys.cpp", line 517: Error: d_type is not a member of dirent.
pkgbuild: "local_filesys.cpp", line 528: Error: DT_DIR is not defined.
pkgbuild: "local_filesys.cpp", line 528: Error: d_type is not a member of dirent.
pkgbuild: 9 Error(s) and 3 Warning(s) detected.

Attachments (2)

filezilla-02-multimap-const.diff (828 bytes ) - added by Alfred Peng 16 years ago.
The patch to fix the first error
filezilla-03-dirent-to-stat.diff (1.6 KB ) - added by Alfred Peng 16 years ago.
The patch to fix the second error--updated

Download all attachments as: .zip

Change History (8)

by Alfred Peng, 16 years ago

The patch to fix the first error

comment:1 by Alfred Peng, 16 years ago

Forgot to mentioned, I build FileZilla 3.1.3 on Solaris with Sun Studio 12:
bash-3.2$ cc -V
cc: Sun C 5.9 SunOS_i386 Patch 124868-06 2008/06/24

The struct dirent definition on Solaris is as below. Should be different with the one on Linux and cause the build failure.

typedef struct dirent {

ino_t d_ino; /* "inode number" of entry */
off_t d_off; /* offset of disk directory entry */
unsigned short d_reclen; /* length of this record */
char d_name[1]; /* name of file */

} dirent_t;

comment:2 by Tim Kosse, 16 years ago

Owner: set to Tim Kosse
Status: newaccepted

Unfortunately I cannot apply the second patch in its current form. The additional stat is unneeded on some systems. It can cause significant delays on mounted network resources, depending on mount options.

Some #ifdefery or a configure check is needed instead.

by Alfred Peng, 16 years ago

The patch to fix the second error--updated

comment:3 by Tim Kosse, 16 years ago

I've committed some changes that check if _DIRENT_HAVE_D_TYPE is defined. If it is, d_type is used, else GetFileInfo gets used.

comment:4 by Tim Kosse, 16 years ago

Resolution: fixed
Status: acceptedclosed

comment:5 by Alfred Peng, 16 years ago

It's so quick. thanks, guys.

Note: See TracTickets for help on using tickets.