commit: 6c33a435474c05703d8f93eed28d639b8269616e Author: Eli Schwartz <eschwartz <AT> gentoo <DOT> org> AuthorDate: Wed Jul 10 03:15:12 2024 +0000 Commit: Yixun Lan <dlan <AT> gentoo <DOT> org> CommitDate: Wed Jul 10 07:55:49 2024 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6c33a435
net-ftp/filezilla: backport patch to fix ODR violations Closes: https://bugs.gentoo.org/927178 Signed-off-by: Eli Schwartz <eschwartz <AT> gentoo.org> Signed-off-by: Yixun Lan <dlan <AT> gentoo.org> net-ftp/filezilla/files/filezilla-3.67.0-odr.patch | 670 +++++++++++++++++++++ net-ftp/filezilla/filezilla-3.67.0-r1.ebuild | 77 +++ 2 files changed, 747 insertions(+) diff --git a/net-ftp/filezilla/files/filezilla-3.67.0-odr.patch b/net-ftp/filezilla/files/filezilla-3.67.0-odr.patch new file mode 100644 index 000000000000..ec6af91b56cb --- /dev/null +++ b/net-ftp/filezilla/files/filezilla-3.67.0-odr.patch @@ -0,0 +1,670 @@ +https://bugs.gentoo.org/927178#c3 + +No upstream bug link -- their trac was temporarily down so I had to send the +report in via email. + +Revision exported from: + +``` +svn diff -c 11167 https://svn.filezilla-project.org/svn/FileZilla3 +``` + +https://svn.filezilla-project.org/filezilla?view=revision&revision=11167 + + +Index: trunk/src/engine/storj/delete.cpp +=================================================================== +--- trunk/src/engine/storj/delete.cpp (revision 11166) ++++ trunk/src/engine/storj/delete.cpp (revision 11167) +@@ -3,6 +3,7 @@ + #include "../directorycache.h" + #include "delete.h" + ++namespace { + enum DeleteStates + { + delete_init, +@@ -9,6 +10,7 @@ + delete_resolve, + delete_delete + }; ++} + + int CStorjDeleteOpData::Send() + { +Index: trunk/src/engine/storj/list.cpp +=================================================================== +--- trunk/src/engine/storj/list.cpp (revision 11166) ++++ trunk/src/engine/storj/list.cpp (revision 11167) +@@ -3,6 +3,7 @@ + #include "../directorycache.h" + #include "list.h" + ++namespace { + enum listStates + { + list_init = 0, +@@ -9,6 +10,7 @@ + list_waitlock, + list_list + }; ++} + + int CStorjListOpData::Send() + { +Index: trunk/src/engine/storj/rmd.cpp +=================================================================== +--- trunk/src/engine/storj/rmd.cpp (revision 11166) ++++ trunk/src/engine/storj/rmd.cpp (revision 11167) +@@ -5,6 +5,7 @@ + + #include <assert.h> + ++namespace { + enum mkdStates + { + rmd_init = 0, +@@ -11,8 +12,8 @@ + rmd_rmbucket, + rmd_rmdir + }; ++} + +- + int CStorjRemoveDirOpData::Send() + { + switch (opState) { +Index: trunk/src/engine/ftp/chmod.cpp +=================================================================== +--- trunk/src/engine/ftp/chmod.cpp (revision 11166) ++++ trunk/src/engine/ftp/chmod.cpp (revision 11167) +@@ -3,6 +3,7 @@ + #include "chmod.h" + #include "../directorycache.h" + ++namespace { + enum chmodStates + { + chmod_init, +@@ -9,6 +10,7 @@ + chmod_waitcwd, + chmod_chmod + }; ++} + + int CFtpChmodOpData::Send() + { +Index: trunk/src/engine/ftp/cwd.cpp +=================================================================== +--- trunk/src/engine/ftp/cwd.cpp (revision 11166) ++++ trunk/src/engine/ftp/cwd.cpp (revision 11167) +@@ -3,6 +3,7 @@ + #include "cwd.h" + #include "../pathcache.h" + ++namespace { + enum cwdStates + { + cwd_init = 0, +@@ -12,6 +13,7 @@ + cwd_cwd_subdir, + cwd_pwd_subdir + }; ++} + + int CFtpChangeDirOpData::Send() + { +Index: trunk/src/engine/ftp/delete.cpp +=================================================================== +--- trunk/src/engine/ftp/delete.cpp (revision 11166) ++++ trunk/src/engine/ftp/delete.cpp (revision 11167) +@@ -3,6 +3,7 @@ + #include "delete.h" + #include "../directorycache.h" + ++namespace { + enum rmdStates + { + del_init, +@@ -9,6 +10,7 @@ + del_waitcwd, + del_del + }; ++} + + int CFtpDeleteOpData::Send() + { +Index: trunk/src/engine/ftp/filetransfer.cpp +=================================================================== +--- trunk/src/engine/ftp/filetransfer.cpp (revision 11166) ++++ trunk/src/engine/ftp/filetransfer.cpp (revision 11167) +@@ -12,6 +12,22 @@ + + #include <assert.h> + ++namespace { ++enum filetransferStates ++{ ++ filetransfer_init = 0, ++ filetransfer_waitcwd, ++ filetransfer_waitlist, ++ filetransfer_size, ++ filetransfer_mdtm, ++ filetransfer_resumetest, ++ filetransfer_transfer, ++ filetransfer_waittransfer, ++ filetransfer_waitresumetest, ++ filetransfer_mfmt ++}; ++} ++ + CFtpFileTransferOpData::CFtpFileTransferOpData(CFtpControlSocket& controlSocket, CFileTransferCommand const& cmd) + : CFileTransferOpData(L"CFtpFileTransferOpData", cmd) + , CFtpOpData(controlSocket) +Index: trunk/src/engine/ftp/filetransfer.h +=================================================================== +--- trunk/src/engine/ftp/filetransfer.h (revision 11166) ++++ trunk/src/engine/ftp/filetransfer.h (revision 11167) +@@ -3,20 +3,6 @@ + + #include "ftpcontrolsocket.h" + +-enum filetransferStates +-{ +- filetransfer_init = 0, +- filetransfer_waitcwd, +- filetransfer_waitlist, +- filetransfer_size, +- filetransfer_mdtm, +- filetransfer_resumetest, +- filetransfer_transfer, +- filetransfer_waittransfer, +- filetransfer_waitresumetest, +- filetransfer_mfmt +-}; +- + class CFtpFileTransferOpData final : public CFileTransferOpData, public CFtpTransferOpData, public CFtpOpData + { + public: +Index: trunk/src/engine/ftp/ftpcontrolsocket.cpp +=================================================================== +--- trunk/src/engine/ftp/ftpcontrolsocket.cpp (revision 11166) ++++ trunk/src/engine/ftp/ftpcontrolsocket.cpp (revision 11167) +@@ -34,6 +34,9 @@ + + #include <assert.h> + ++using namespace ftpLogonStates; ++using namespace FtpRawTransferStates; ++ + CFtpControlSocket::CFtpControlSocket(CFileZillaEnginePrivate & engine) + : CRealControlSocket(engine) + { +Index: trunk/src/engine/ftp/list.cpp +=================================================================== +--- trunk/src/engine/ftp/list.cpp (revision 11166) ++++ trunk/src/engine/ftp/list.cpp (revision 11167) +@@ -9,6 +9,15 @@ + #include <assert.h> + + namespace { ++enum listStates ++{ ++ list_init, ++ list_waitcwd, ++ list_waitlock, ++ list_waittransfer, ++ list_mdtm ++}; ++ + // Some servers are broken. Instead of an empty listing, some MVS servers + // for example they return "550 no members found" + // Other servers return "550 No files found." +Index: trunk/src/engine/ftp/list.h +=================================================================== +--- trunk/src/engine/ftp/list.h (revision 11166) ++++ trunk/src/engine/ftp/list.h (revision 11167) +@@ -6,15 +6,6 @@ + + class CDirectoryListingParser; + +-enum listStates +-{ +- list_init, +- list_waitcwd, +- list_waitlock, +- list_waittransfer, +- list_mdtm +-}; +- + class CFtpListOpData final : public COpData, public CFtpOpData, public CFtpTransferOpData + { + public: +Index: trunk/src/engine/ftp/logon.cpp +=================================================================== +--- trunk/src/engine/ftp/logon.cpp (revision 11166) ++++ trunk/src/engine/ftp/logon.cpp (revision 11167) +@@ -10,6 +10,7 @@ + #include "../../include/engine_options.h" + + using namespace std::literals; ++using namespace ftpLogonStates; + + CFtpLogonOpData::CFtpLogonOpData(CFtpControlSocket& controlSocket) + : COpData(Command::connect, L"CFtpLogonOpData") +Index: trunk/src/engine/ftp/logon.h +=================================================================== +--- trunk/src/engine/ftp/logon.h (revision 11166) ++++ trunk/src/engine/ftp/logon.h (revision 11167) +@@ -3,27 +3,27 @@ + + #include "ftpcontrolsocket.h" + +-enum loginStates +-{ +- LOGON_CONNECT, +- LOGON_WELCOME, +- LOGON_AUTH_TLS, +- LOGON_AUTH_SSL, +- LOGON_AUTH_WAIT, +- LOGON_SECURITY, +- LOGON_LOGON, +- LOGON_SYST, +- LOGON_FEAT, +- LOGON_CLNT, +- LOGON_OPTSUTF8, +- LOGON_PBSZ, +- LOGON_PROT, +- LOGON_OPTSMLST, +- LOGON_CUSTOMCOMMANDS, +- LOGON_DONE ++namespace ftpLogonStates { ++enum type { ++ LOGON_CONNECT, ++ LOGON_WELCOME, ++ LOGON_AUTH_TLS, ++ LOGON_AUTH_SSL, ++ LOGON_AUTH_WAIT, ++ LOGON_SECURITY, ++ LOGON_LOGON, ++ LOGON_SYST, ++ LOGON_FEAT, ++ LOGON_CLNT, ++ LOGON_OPTSUTF8, ++ LOGON_PBSZ, ++ LOGON_PROT, ++ LOGON_OPTSMLST, ++ LOGON_CUSTOMCOMMANDS, ++ LOGON_DONE + }; ++} + +- + enum class loginCommandType + { + user, +@@ -73,7 +73,7 @@ + + unsigned int customCommandIndex{}; + +- int neededCommands[LOGON_DONE]{}; ++ int neededCommands[ftpLogonStates::LOGON_DONE]{}; + + std::deque<t_loginCommand> loginSequence; + +Index: trunk/src/engine/ftp/mkd.cpp +=================================================================== +--- trunk/src/engine/ftp/mkd.cpp (revision 11166) ++++ trunk/src/engine/ftp/mkd.cpp (revision 11167) +@@ -5,6 +5,7 @@ + + using namespace std::literals; + ++namespace { + enum mkdStates + { + mkd_init = 0, +@@ -13,6 +14,7 @@ + mkd_cwdsub, + mkd_tryfull + }; ++} + + /* Directory creation works like this: First find a parent directory into + * which we can CWD, then create the subdirs one by one. If either part +Index: trunk/src/engine/ftp/rawtransfer.cpp +=================================================================== +--- trunk/src/engine/ftp/rawtransfer.cpp (revision 11166) ++++ trunk/src/engine/ftp/rawtransfer.cpp (revision 11167) +@@ -7,7 +7,7 @@ + + #include <libfilezilla/iputils.hpp> + +-#include <assert.h> ++using namespace FtpRawTransferStates; + + int CFtpRawTransferOpData::Send() + { +@@ -423,7 +423,6 @@ + { + std::wstring ret = L"PASV"; + +- assert(bPasv); + bTriedPasv = true; + + if (controlSocket_.proxy_layer_) { +Index: trunk/src/engine/ftp/rawtransfer.h +=================================================================== +--- trunk/src/engine/ftp/rawtransfer.h (revision 11166) ++++ trunk/src/engine/ftp/rawtransfer.h (revision 11167) +@@ -3,18 +3,20 @@ + + #include "ftpcontrolsocket.h" + +-enum rawtransferStates ++namespace FtpRawTransferStates { ++enum type + { +- rawtransfer_init = 0, +- rawtransfer_type, +- rawtransfer_port_pasv, +- rawtransfer_rest, +- rawtransfer_transfer, +- rawtransfer_waitfinish, +- rawtransfer_waittransferpre, +- rawtransfer_waittransfer, +- rawtransfer_waitsocket ++ rawtransfer_init = 0, ++ rawtransfer_type, ++ rawtransfer_port_pasv, ++ rawtransfer_rest, ++ rawtransfer_transfer, ++ rawtransfer_waitfinish, ++ rawtransfer_waittransferpre, ++ rawtransfer_waittransfer, ++ rawtransfer_waitsocket + }; ++} + + class CFtpRawTransferOpData final : public COpData, public CFtpOpData + { +Index: trunk/src/engine/ftp/rename.cpp +=================================================================== +--- trunk/src/engine/ftp/rename.cpp (revision 11166) ++++ trunk/src/engine/ftp/rename.cpp (revision 11167) +@@ -4,6 +4,7 @@ + #include "../directorycache.h" + #include "../pathcache.h" + ++namespace { + enum renameStates + { + rename_init, +@@ -11,6 +12,7 @@ + rename_rnfrom, + rename_rnto + }; ++} + + int CFtpRenameOpData::Send() + { +Index: trunk/src/engine/ftp/rmd.cpp +=================================================================== +--- trunk/src/engine/ftp/rmd.cpp (revision 11166) ++++ trunk/src/engine/ftp/rmd.cpp (revision 11167) +@@ -4,6 +4,7 @@ + #include "../directorycache.h" + #include "../pathcache.h" + ++namespace { + enum rmdStates + { + rmd_init, +@@ -10,6 +11,7 @@ + rmd_waitcwd, + rmd_rmd + }; ++} + + int CFtpRemoveDirOpData::Send() + { +Index: trunk/src/engine/http/filetransfer.cpp +=================================================================== +--- trunk/src/engine/http/filetransfer.cpp (revision 11166) ++++ trunk/src/engine/http/filetransfer.cpp (revision 11167) +@@ -7,6 +7,7 @@ + #include <assert.h> + #include <string.h> + ++namespace { + enum filetransferStates + { + filetransfer_init = 0, +@@ -13,6 +14,7 @@ + filetransfer_transfer, + filetransfer_waittransfer + }; ++} + + CHttpFileTransferOpData::CHttpFileTransferOpData(CHttpControlSocket & controlSocket, CFileTransferCommand const& cmd) + : CFileTransferOpData(L"CHttpFileTransferOpData", cmd) +Index: trunk/src/engine/sftp/chmod.cpp +=================================================================== +--- trunk/src/engine/sftp/chmod.cpp (revision 11166) ++++ trunk/src/engine/sftp/chmod.cpp (revision 11167) +@@ -3,6 +3,7 @@ + #include "chmod.h" + #include "../directorycache.h" + ++namespace { + enum chmodStates + { + chmod_init, +@@ -9,6 +10,7 @@ + chmod_waitcwd, + chmod_chmod + }; ++} + + int CSftpChmodOpData::Send() + { +Index: trunk/src/engine/sftp/connect.cpp +=================================================================== +--- trunk/src/engine/sftp/connect.cpp (revision 11166) ++++ trunk/src/engine/sftp/connect.cpp (revision 11167) +@@ -21,6 +21,7 @@ + #include <sys/mman.h> + #endif + ++namespace { + enum connectStates + { + connect_init, +@@ -28,6 +29,7 @@ + connect_keys, + connect_open + }; ++} + + int CSftpConnectOpData::Send() + { +Index: trunk/src/engine/sftp/cwd.cpp +=================================================================== +--- trunk/src/engine/sftp/cwd.cpp (revision 11166) ++++ trunk/src/engine/sftp/cwd.cpp (revision 11167) +@@ -3,6 +3,7 @@ + #include "cwd.h" + #include "../pathcache.h" + ++namespace { + enum cwdStates + { + cwd_init = 0, +@@ -10,6 +11,7 @@ + cwd_cwd, + cwd_cwd_subdir + }; ++} + + int CSftpChangeDirOpData::Send() + { +Index: trunk/src/engine/sftp/filetransfer.cpp +=================================================================== +--- trunk/src/engine/sftp/filetransfer.cpp (revision 11166) ++++ trunk/src/engine/sftp/filetransfer.cpp (revision 11167) +@@ -10,6 +10,7 @@ + + #include <assert.h> + ++namespace { + enum filetransferStates + { + filetransfer_init = 0, +@@ -19,6 +20,7 @@ + filetransfer_transfer, + filetransfer_chmtime + }; ++} + + CSftpFileTransferOpData::~CSftpFileTransferOpData() + { +Index: trunk/src/engine/sftp/list.cpp +=================================================================== +--- trunk/src/engine/sftp/list.cpp (revision 11166) ++++ trunk/src/engine/sftp/list.cpp (revision 11167) +@@ -5,6 +5,7 @@ + + #include <assert.h> + ++namespace { + enum listStates + { + list_init = 0, +@@ -12,6 +13,7 @@ + list_waitlock, + list_list + }; ++} + + int CSftpListOpData::Send() + { +Index: trunk/src/engine/sftp/mkd.cpp +=================================================================== +--- trunk/src/engine/sftp/mkd.cpp (revision 11166) ++++ trunk/src/engine/sftp/mkd.cpp (revision 11167) +@@ -3,6 +3,7 @@ + #include "../directorycache.h" + #include "mkd.h" + ++namespace { + enum mkdStates + { + mkd_init = 0, +@@ -11,6 +12,7 @@ + mkd_cwdsub, + mkd_tryfull + }; ++} + + /* Directory creation works like this: First find a parent directory into + * which we can CWD, then create the subdirs one by one. If either part +Index: trunk/src/engine/sftp/rename.cpp +=================================================================== +--- trunk/src/engine/sftp/rename.cpp (revision 11166) ++++ trunk/src/engine/sftp/rename.cpp (revision 11167) +@@ -4,6 +4,7 @@ + #include "../pathcache.h" + #include "rename.h" + ++namespace { + enum renameStates + { + rename_init, +@@ -10,6 +11,7 @@ + rename_waitcwd, + rename_rename + }; ++} + + int CSftpRenameOpData::Send() + { +Index: trunk/src/engine/storj/connect.cpp +=================================================================== +--- trunk/src/engine/storj/connect.cpp (revision 11166) ++++ trunk/src/engine/storj/connect.cpp (revision 11167) +@@ -22,6 +22,16 @@ + #include <sys/mman.h> + #endif + ++namespace { ++enum connectStates ++{ ++ connect_init, ++ connect_host, ++ connect_user, ++ connect_pass ++}; ++} ++ + int CStorjConnectOpData::Send() + { + switch (opState) +Index: trunk/src/engine/storj/connect.h +=================================================================== +--- trunk/src/engine/storj/connect.h (revision 11166) ++++ trunk/src/engine/storj/connect.h (revision 11167) +@@ -3,14 +3,6 @@ + + #include "storjcontrolsocket.h" + +-enum connectStates +-{ +- connect_init, +- connect_host, +- connect_user, +- connect_pass +-}; +- + class CStorjConnectOpData final : public COpData, public CStorjOpData + { + public: +Index: trunk/src/engine/storj/file_transfer.cpp +=================================================================== +--- trunk/src/engine/storj/file_transfer.cpp (revision 11166) ++++ trunk/src/engine/storj/file_transfer.cpp (revision 11167) +@@ -7,6 +7,7 @@ + #include <libfilezilla/local_filesys.hpp> + #include <libfilezilla/process.hpp> + ++namespace { + enum FileTransferStates + { + filetransfer_init, +@@ -15,6 +16,7 @@ + filetransfer_delete, + filetransfer_transfer + }; ++} + + CStorjFileTransferOpData::~CStorjFileTransferOpData() + { +Index: trunk/src/engine/storj/mkd.cpp +=================================================================== +--- trunk/src/engine/storj/mkd.cpp (revision 11166) ++++ trunk/src/engine/storj/mkd.cpp (revision 11167) +@@ -3,6 +3,7 @@ + #include "../directorycache.h" + #include "mkd.h" + ++namespace { + enum mkdStates + { + mkd_init = 0, +@@ -9,6 +10,7 @@ + mkd_mkbucket, + mkd_put + }; ++} + + int CStorjMkdirOpData::Send() + { diff --git a/net-ftp/filezilla/filezilla-3.67.0-r1.ebuild b/net-ftp/filezilla/filezilla-3.67.0-r1.ebuild new file mode 100644 index 000000000000..5c66ad26eef6 --- /dev/null +++ b/net-ftp/filezilla/filezilla-3.67.0-r1.ebuild @@ -0,0 +1,77 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +WX_GTK_VER="3.2-gtk3" + +inherit autotools flag-o-matic wxwidgets xdg + +MY_PV="${PV/_/-}" +MY_P="FileZilla_${MY_PV}" + +DESCRIPTION="FTP client with lots of useful features and an intuitive interface" +HOMEPAGE="https://filezilla-project.org/" +SRC_URI="https://download.filezilla-project.org/client/${MY_P}_src.tar.xz" +S="${WORKDIR}/${PN}-${MY_PV}" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 ~riscv ~x86" +IUSE="cpu_flags_x86_sse2 dbus nls test" +RESTRICT="!test? ( test )" + +# pugixml 1.7 minimal dependency is for c++11 proper configuration +RDEPEND=" + >=dev-libs/nettle-3.1:= + >=dev-db/sqlite-3.7 + >=dev-libs/boost-1.76.0:= + >=dev-libs/libfilezilla-0.47.0:= + >=dev-libs/pugixml-1.7 + >=net-libs/gnutls-3.5.7 + x11-libs/wxGTK:${WX_GTK_VER}[X] + x11-misc/xdg-utils + dbus? ( sys-apps/dbus )" +DEPEND="${RDEPEND} + test? ( >=dev-util/cppunit-1.13.0 )" +BDEPEND=" + virtual/pkgconfig + >=dev-build/libtool-1.4 + nls? ( >=sys-devel/gettext-0.11 )" + +PATCHES=( + "${FILESDIR}"/${PN}-3.22.1-debug.patch + "${FILESDIR}"/${PN}-3.47.0-metainfo.patch + "${FILESDIR}"/${PN}-3.47.0-disable-shellext_conf.patch + "${FILESDIR}"/${PN}-3.52.2-slibtool.patch + "${FILESDIR}"/${PN}-3.60.1-desktop.patch + # backport patch for ODR + "${FILESDIR}"/filezilla-3.67.0-odr.patch +) + +src_prepare() { + default + eautoreconf +} + +src_configure() { + if use x86 && ! use cpu_flags_x86_sse2; then + append-cppflags -D_FORCE_SOFTWARE_SHA + fi + setup-wxwidgets + + local myeconfargs=( + --disable-autoupdatecheck + --with-pugixml=system + $(use_enable nls locales) + $(use_with dbus) + ) + econf "${myeconfargs[@]}" +} + +src_install() { + default + + # no static archives + find "${ED}" -name '*.la' -delete || die +}