pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

megacmd: import from pkgsrc



Module Name:	pkgsrc-wip
Committed By:	kikadf <kikadf.01%gmail.com@localhost>
Pushed By:	kikadf
Date:		Tue Apr 15 18:09:07 2025 +0200
Changeset:	fe4d717450180b0be1495ea4206dcdd50cd55994

Modified Files:
	Makefile
Added Files:
	megacmd/DESCR
	megacmd/Makefile
	megacmd/PLIST
	megacmd/distinfo
	megacmd/files/README
	megacmd/patches/patch-CMakeLists.txt
	megacmd/patches/patch-build_cmake_modules_megacmd__libraries.cmake
	megacmd/patches/patch-sdk_cmake_modules_sdklib__libraries.cmake
	megacmd/patches/patch-sdk_cmake_modules_sdklib__target.cmake
	megacmd/patches/patch-sdk_include_mega_posix_megafs.h
	megacmd/patches/patch-sdk_src_posix_fs.cpp
	megacmd/patches/patch-src_megacmdcommonutils.cpp
	megacmd/patches/patch-src_megacmdcommonutils.h
	megacmd/patches/patch-src_megacmdshell_megacmdshellcommunications.cpp

Log Message:
megacmd: import from pkgsrc

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=fe4d717450180b0be1495ea4206dcdd50cd55994

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 Makefile                                           |   2 +
 megacmd/DESCR                                      |   8 ++
 megacmd/Makefile                                   |  57 +++++++++
 megacmd/PLIST                                      |  66 +++++++++++
 megacmd/distinfo                                   |  17 +++
 megacmd/files/README                               |  12 ++
 megacmd/patches/patch-CMakeLists.txt               |  83 +++++++++++++
 ...ch-build_cmake_modules_megacmd__libraries.cmake |  15 +++
 ...patch-sdk_cmake_modules_sdklib__libraries.cmake |  21 ++++
 .../patch-sdk_cmake_modules_sdklib__target.cmake   |  15 +++
 .../patches/patch-sdk_include_mega_posix_megafs.h  |  16 +++
 megacmd/patches/patch-sdk_src_posix_fs.cpp         | 128 +++++++++++++++++++++
 megacmd/patches/patch-src_megacmdcommonutils.cpp   |  16 +++
 megacmd/patches/patch-src_megacmdcommonutils.h     |  16 +++
 ...src_megacmdshell_megacmdshellcommunications.cpp |  15 +++
 15 files changed, 487 insertions(+)

diffs:
diff --git a/Makefile b/Makefile
index 6c93813e0e..56ff2ab7e4 100644
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,4 @@
+
 # $NetBSD$
 
 COMMENT=	Work-in-progress packages
@@ -2337,6 +2338,7 @@ SUBDIR+=	mdbtools
 SUBDIR+=	mdpress
 SUBDIR+=	med
 SUBDIR+=	mediawiki-mode
+SUBDIR+=	megacmd
 SUBDIR+=	meka-git
 SUBDIR+=	melonds
 SUBDIR+=	memdump
diff --git a/megacmd/DESCR b/megacmd/DESCR
new file mode 100644
index 0000000000..e9403124a5
--- /dev/null
+++ b/megacmd/DESCR
@@ -0,0 +1,8 @@
+MEGA is a cloud storage, file and folder sharing
+provider.
+MEGAcmd is a free, open source tool that provides
+non UI access to MEGA services. It intends to offer
+all the functionality with your MEGA account via
+commands. It features synchronization, backup of
+local folders into your MEGA account and a webdav
+or streaming server.
diff --git a/megacmd/Makefile b/megacmd/Makefile
new file mode 100644
index 0000000000..465d5e20bc
--- /dev/null
+++ b/megacmd/Makefile
@@ -0,0 +1,57 @@
+# $NetBSD: Makefile,v 1.10 2025/02/15 07:40:13 wiz Exp $
+
+DISTNAME=	megacmd-2.0.0
+CATEGORIES=	net
+MASTER_SITES=	${MASTER_SITE_GITHUB:=meganz/}
+GITHUB_PROJECT=	MEGAcmd
+GITHUB_TAG=	${PKGVERSION_NOREV}_Linux
+SDK_VERSION=	v8.3.1
+
+GITHUB_SUBMODULES=	meganz sdk ${SDK_VERSION} sdk
+
+MAINTAINER=	kikadf.01%gmail.com@localhost
+HOMEPAGE=	https://mega.io/
+COMMENT=	CLI and scriptable application to access MEGA
+# MEGAcmd: GPLv3, SDK: BSD 2-clause
+LICENSE=	gnu-gpl-v3 AND 2-clause-bsd
+
+TOOL_DEPENDS+=	git-base-[0-9]*:../../devel/git-base
+
+USE_LANGUAGES+=		c c++
+USE_CXX_FEATURES+=	filesystem
+FORCE_CXX_STD=		c++17
+USE_LIBTOOL=		yes
+USE_TOOLS+=		pkg-config
+REPLACE_SH=		src/client/mega-*
+CXXFLAGS+=		-DCRYPTOPP_DISABLE_ASM
+
+CMAKE_CONFIGURE_ARGS+=	-DCMAKE_BUILD_TYPE=Release
+CMAKE_CONFIGURE_ARGS+=	-DFULL_REQS=OFF
+CMAKE_CONFIGURE_ARGS+=	-DUSE_MEDIAINFO=OFF
+CMAKE_CONFIGURE_ARGS+=	-DUSE_FREEIMAGE=OFF
+CMAKE_CONFIGURE_ARGS+=	-DUSE_FFMPEG=OFF
+CMAKE_CONFIGURE_ARGS+=	-DUSE_PDFIUM=OFF
+
+CHECK_PORTABILITY_SKIP+=	sdk/bindings/ios/3rdparty/*.sh
+
+INSTALLATION_DIRS+=	share/doc/megacmd
+
+post-install:
+	${MV} ${DESTDIR}${PREFIX}/share/bash-completion/completions/megacmd_completion.sh \
+		${DESTDIR}${PREFIX}/share/bash-completion/completions/megacmd
+	${INSTALL_DATA} ${FILESDIR}/README ${DESTDIR}${PREFIX}/share/doc/megacmd
+
+.include "../../databases/sqlite3/buildlink3.mk"
+.include "../../devel/cmake/build.mk"
+.include "../../devel/pcre/buildlink3.mk"
+.include "../../devel/libinotify/buildlink3.mk"
+.include "../../devel/libuv/buildlink3.mk"
+.include "../../devel/readline/buildlink3.mk"
+.include "../../net/libcares/buildlink3.mk"
+BUILDLINK_API_DEPENDS.cryptopp+=	cryptopp>=8.7.0nb1
+.include "../../security/crypto++/buildlink3.mk"
+.include "../../security/libsodium/buildlink3.mk"
+.include "../../textproc/icu/buildlink3.mk"
+.include "../../www/curl/buildlink3.mk"
+.include "../../mk/atomic64.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/megacmd/PLIST b/megacmd/PLIST
new file mode 100644
index 0000000000..9807eacf79
--- /dev/null
+++ b/megacmd/PLIST
@@ -0,0 +1,66 @@
+@comment $NetBSD: PLIST,v 1.3 2025/02/15 07:40:13 wiz Exp $
+bin/mega-attr
+bin/mega-backup
+bin/mega-cancel
+bin/mega-cat
+bin/mega-cd
+bin/mega-cmd
+bin/mega-cmd-server
+bin/mega-confirm
+bin/mega-confirmcancel
+bin/mega-cp
+bin/mega-debug
+bin/mega-deleteversions
+bin/mega-df
+bin/mega-du
+bin/mega-errorcode
+bin/mega-exclude
+bin/mega-exec
+bin/mega-export
+bin/mega-find
+bin/mega-ftp
+bin/mega-get
+bin/mega-graphics
+bin/mega-help
+bin/mega-https
+bin/mega-import
+bin/mega-invite
+bin/mega-ipc
+bin/mega-killsession
+bin/mega-lcd
+bin/mega-log
+bin/mega-login
+bin/mega-logout
+bin/mega-lpwd
+bin/mega-ls
+bin/mega-mediainfo
+bin/mega-mkdir
+bin/mega-mount
+bin/mega-mv
+bin/mega-passwd
+bin/mega-permissions
+bin/mega-preview
+bin/mega-proxy
+bin/mega-put
+bin/mega-pwd
+bin/mega-quit
+bin/mega-reload
+bin/mega-rm
+bin/mega-session
+bin/mega-share
+bin/mega-showpcr
+bin/mega-signup
+bin/mega-speedlimit
+bin/mega-sync
+bin/mega-sync-ignore
+bin/mega-sync-issues
+bin/mega-thumbnail
+bin/mega-transfers
+bin/mega-tree
+bin/mega-userattr
+bin/mega-users
+bin/mega-version
+bin/mega-webdav
+bin/mega-whoami
+share/bash-completion/completions/megacmd
+share/doc/megacmd/README
diff --git a/megacmd/distinfo b/megacmd/distinfo
new file mode 100644
index 0000000000..61be5c08cf
--- /dev/null
+++ b/megacmd/distinfo
@@ -0,0 +1,17 @@
+$NetBSD: distinfo,v 1.3 2025/02/15 07:40:13 wiz Exp $
+
+BLAKE2s (megacmd-2.0.0.tar.gz) = 46f5f94b6cb1af5dbdb8afb595608f88a14727f33c7aea46a0604fb8c3037b86
+SHA512 (megacmd-2.0.0.tar.gz) = a0ff37c33de492f0751d27f46bd83f506314f43985a247e1fe0de7683f3a8bfc059d05441816147acbda95b349b4d39e56cdac5f3893b697cda4f77efb197ce4
+Size (megacmd-2.0.0.tar.gz) = 2104772 bytes
+BLAKE2s (meganz-sdk-v8.3.1.tar.gz) = 4851001b7556d6a25f6d39e1e082e057b877cf68b55e85eba5b30486f1a0559c
+SHA512 (meganz-sdk-v8.3.1.tar.gz) = d80c7aa7a27f9f56405cd0bb5943135d6fb3590196c1a8f74b41ad3e94dc7704fe905342d6bdd431fc80e38eac74b0d8b11d8b8802b2c868931d0d11bb78f883
+Size (meganz-sdk-v8.3.1.tar.gz) = 4061833 bytes
+SHA1 (patch-CMakeLists.txt) = f8936fbcd4200139fec6ada0bad5644ddb54145b
+SHA1 (patch-build_cmake_modules_megacmd__libraries.cmake) = afabd22177c0437fbe1d13fdf6601832bc60cd96
+SHA1 (patch-sdk_cmake_modules_sdklib__libraries.cmake) = 67c919b57515659075ea43e26e349d9a94180a8c
+SHA1 (patch-sdk_cmake_modules_sdklib__target.cmake) = 33f5b16dc561e37f076c60fa537a4c5b8d8c992e
+SHA1 (patch-sdk_include_mega_posix_megafs.h) = b266e3a568925df3227387e16e1cb9f6670d9b4a
+SHA1 (patch-sdk_src_posix_fs.cpp) = 90d71c411c8fd733b9fdef288880fb9d74d12fed
+SHA1 (patch-src_megacmdcommonutils.cpp) = 6128e295e1a816ad4d7ea1ec59fa963391eb3bfb
+SHA1 (patch-src_megacmdcommonutils.h) = 194d991a02e8e48c9c31c60384549c276e4ee735
+SHA1 (patch-src_megacmdshell_megacmdshellcommunications.cpp) = ff794d128ffa6e0626296a504b22f391e0fc923b
diff --git a/megacmd/files/README b/megacmd/files/README
new file mode 100644
index 0000000000..c98d131988
--- /dev/null
+++ b/megacmd/files/README
@@ -0,0 +1,12 @@
+$NetBSD: README,v 1.2 2025/01/23 20:10:07 wiz Exp $
+
+To use megacmd features you need machine-id.
+If /etc/machine-id or /var/lib/dbus/machine-id
+not exists, you should generate one. For that,
+run the following command as root:
+
+- if dbus installed:
+	dbus-uuidgen --ensure
+
+- without dbus:
+	sh -c 'date|md5 > /etc/machine-id'
diff --git a/megacmd/patches/patch-CMakeLists.txt b/megacmd/patches/patch-CMakeLists.txt
new file mode 100644
index 0000000000..8fe323081b
--- /dev/null
+++ b/megacmd/patches/patch-CMakeLists.txt
@@ -0,0 +1,83 @@
+$NetBSD: patch-CMakeLists.txt,v 1.1 2025/02/15 07:40:13 wiz Exp $
+
+* Use system dependencies instead of vcpkg
+* Fix install directories
+* Install inotify conf file only on Linux
+
+--- CMakeLists.txt.orig	2025-01-30 14:04:12.000000000 +0100
++++ CMakeLists.txt
+@@ -26,7 +26,8 @@ set(QT_CREATOR_SKIP_VCPKG_SETUP TRUE CAC
+ list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/build/cmake/modules) # Modules from MEGAcmd
+ list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/sdk/cmake/modules) # Modules from MEGAsdk
+ 
+-set(VCPKG_ROOT "${CMAKE_CURRENT_LIST_DIR}/../vcpkg" CACHE PATH "If set, it will build and use the VCPKG packages defined in the manifest file")
++#set(VCPKG_ROOT "${CMAKE_CURRENT_LIST_DIR}/../vcpkg" CACHE PATH "If set, it will build and use the VCPKG packages defined in the manifest file")
++set(VCPKG_ROOT "" CACHE PATH "If set, it will build and use the VCPKG packages defined in the manifest file")
+ 
+ include(detect_host_architecture)
+ 
+@@ -39,7 +40,7 @@ execute_process(
+ )
+ endif()
+ 
+-if((NOT WIN32 OR BASH_VERSION_RESULT EQUAL 0) AND NOT EXISTS ${VCPKG_ROOT})
++if(VCPKG_ROOT AND (NOT WIN32 OR BASH_VERSION_RESULT EQUAL 0) AND NOT EXISTS ${VCPKG_ROOT})
+     message(STATUS "vcpkg will be cloned into ${VCPKG_ROOT}")
+     execute_process(
+         #TODO: have the same for windows ... or at least check if bash is available
+@@ -134,8 +135,8 @@ if(UNIX AND NOT APPLE)
+     # If CMAKE_INSTALL_PREFIX is not set, it will set rpath to /opt/....
+     # Note: using cmake --install --prefix /some/prefix will not set rpath relative to that prefix
+     # The above can be used for building packages: in which install dir is a path construction folder that will not be there in packages
+-    set(CMAKE_INSTALL_LIBDIR "opt/megacmd/lib")
+-    set(CMAKE_INSTALL_BINDIR "usr/bin") #override default "bin"
++    set(CMAKE_INSTALL_LIBDIR "lib")
++    set(CMAKE_INSTALL_BINDIR "bin") #override default "bin"
+ 
+     if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+         message(STATUS "Overriding default CMAKE_INSTALL_PREFIX to /")
+@@ -457,27 +458,31 @@ elseif(NOT WIN32)
+         PATTERN "win" EXCLUDE)
+ 
+     install(FILES "${CMAKE_CURRENT_LIST_DIR}/src/client/megacmd_completion.sh"
+-        DESTINATION "etc/bash_completion.d"
++        DESTINATION "share/bash-completion/completions"
+         )
+ 
+-    # generate 100-megacmd-inotify-limit.conf file and have it installed
+-    execute_process(COMMAND echo "fs.inotify.max_user_watches = 524288"
++    if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
++        # generate 100-megacmd-inotify-limit.conf file and have it installed
++        execute_process(COMMAND echo "fs.inotify.max_user_watches = 524288"
+                 OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/99-megacmd-inotify-limit.conf)
+-    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/99-megacmd-inotify-limit.conf
+-        DESTINATION "etc/sysctl.d"
+-        )
+-
+-    #Install vcpkg dynamic libraries in locations defined by GNUInstallDirs.
+-    if(CMAKE_BUILD_TYPE STREQUAL "Debug")
+-        SET(vcpkg_lib_folder "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib/")
+-    else()
+-        SET(vcpkg_lib_folder "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/")
++        install(FILES ${CMAKE_CURRENT_BINARY_DIR}/99-megacmd-inotify-limit.conf
++            DESTINATION "etc/sysctl.d"
++            )
+     endif()
+-    install(DIRECTORY "${vcpkg_lib_folder}"
++
++    if(VCPKG_ROOT)
++        #Install vcpkg dynamic libraries in locations defined by GNUInstallDirs.
++        if(CMAKE_BUILD_TYPE STREQUAL "Debug")
++            SET(vcpkg_lib_folder "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib/")
++        else()
++            SET(vcpkg_lib_folder "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/")
++        endif()
++        install(DIRECTORY "${vcpkg_lib_folder}"
+             DESTINATION ${CMAKE_INSTALL_LIBDIR}
+             FILES_MATCHING
+             PATTERN "lib*.so*"
+             PATTERN "*dylib*" #macOS
+             PATTERN "manual-link" EXCLUDE
+             PATTERN "pkgconfig" EXCLUDE)
++    endif()
+ endif() #not WIN32
diff --git a/megacmd/patches/patch-build_cmake_modules_megacmd__libraries.cmake b/megacmd/patches/patch-build_cmake_modules_megacmd__libraries.cmake
new file mode 100644
index 0000000000..12cfa6b5bf
--- /dev/null
+++ b/megacmd/patches/patch-build_cmake_modules_megacmd__libraries.cmake
@@ -0,0 +1,15 @@
+$NetBSD: patch-build_cmake_modules_megacmd__libraries.cmake,v 1.1 2025/02/15 07:40:13 wiz Exp $
+
+* Fix used pcre library name
+
+--- build/cmake/modules/megacmd_libraries.cmake.orig	2025-01-30 14:04:12.000000000 +0100
++++ build/cmake/modules/megacmd_libraries.cmake
+@@ -16,7 +16,7 @@ macro(load_megacmdserver_libraries)
+         find_package(PkgConfig REQUIRED) # For libraries loaded using pkg-config
+ 
+         if(USE_PCRE) #TODO: UNTESTED!
+-            pkg_check_modules(pcre REQUIRED IMPORTED_TARGET libpcre)
++            pkg_check_modules(pcre REQUIRED IMPORTED_TARGET libpcrecpp)
+             target_link_libraries(LMegacmdServer PRIVATE PkgConfig::pcre)
+             set(USE_PCRE 1)
+         endif()
diff --git a/megacmd/patches/patch-sdk_cmake_modules_sdklib__libraries.cmake b/megacmd/patches/patch-sdk_cmake_modules_sdklib__libraries.cmake
new file mode 100644
index 0000000000..32d5a695ec
--- /dev/null
+++ b/megacmd/patches/patch-sdk_cmake_modules_sdklib__libraries.cmake
@@ -0,0 +1,21 @@
+$NetBSD: patch-sdk_cmake_modules_sdklib__libraries.cmake,v 1.1 2025/02/15 07:40:13 wiz Exp $
+
+* Fix to find libcrypto++
+* Add libinotify check
+
+--- sdk/cmake/modules/sdklib_libraries.cmake.orig	2025-01-24 13:56:57.000000000 +0100
++++ sdk/cmake/modules/sdklib_libraries.cmake
+@@ -95,9 +95,12 @@ macro(load_sdklib_libraries)
+ 
+         find_package(PkgConfig REQUIRED) # For libraries loaded using pkg-config
+ 
+-        pkg_check_modules(cryptopp REQUIRED IMPORTED_TARGET libcrypto++)
++        pkg_check_modules(cryptopp REQUIRED IMPORTED_TARGET libcryptopp)
+         target_link_libraries(SDKlib PUBLIC PkgConfig::cryptopp) # TODO: Private for SDK core
+ 
++        pkg_check_modules(inotify REQUIRED IMPORTED_TARGET libinotify)
++        target_link_libraries(SDKlib PRIVATE PkgConfig::inotify)
++
+         pkg_check_modules(sodium REQUIRED IMPORTED_TARGET libsodium)
+         target_link_libraries(SDKlib PRIVATE PkgConfig::sodium)
+ 
diff --git a/megacmd/patches/patch-sdk_cmake_modules_sdklib__target.cmake b/megacmd/patches/patch-sdk_cmake_modules_sdklib__target.cmake
new file mode 100644
index 0000000000..eee8232a82
--- /dev/null
+++ b/megacmd/patches/patch-sdk_cmake_modules_sdklib__target.cmake
@@ -0,0 +1,15 @@
+$NetBSD: patch-sdk_cmake_modules_sdklib__target.cmake,v 1.1 2025/02/15 07:40:13 wiz Exp $
+
+* On gcc-10 std::filesystem is in stdc++
+
+--- sdk/cmake/modules/sdklib_target.cmake.orig	2025-02-07 10:00:44.872621812 +0100
++++ sdk/cmake/modules/sdklib_target.cmake
+@@ -358,7 +358,7 @@ endif()
+ load_sdklib_libraries()
+ 
+ # System libraries
+-if((NOT (WIN32 OR APPLE OR ANDROID)) AND CMAKE_CXX_STANDARD LESS_EQUAL 17)
++if((NOT (WIN32 OR APPLE OR ANDROID OR UNIX)) AND CMAKE_CXX_STANDARD LESS_EQUAL 17)
+     # Needed for std::experimental::filesystem
+     # Needed for c++17 and std::filesystem for some compilers. Not needed starting in gcc9, but harmless.
+     target_link_libraries(SDKlib PRIVATE stdc++fs)
diff --git a/megacmd/patches/patch-sdk_include_mega_posix_megafs.h b/megacmd/patches/patch-sdk_include_mega_posix_megafs.h
new file mode 100644
index 0000000000..c60da85b3b
--- /dev/null
+++ b/megacmd/patches/patch-sdk_include_mega_posix_megafs.h
@@ -0,0 +1,16 @@
+$NetBSD: patch-sdk_include_mega_posix_megafs.h,v 1.2 2025/02/15 07:40:13 wiz Exp $
+
+* Use FSACCESS_CLASS of linux on BSDs
+
+--- sdk/include/mega/posix/megafs.h.orig	2025-02-13 10:44:28.677854322 +0100
++++ sdk/include/mega/posix/megafs.h
+@@ -192,7 +192,8 @@ private:
+ 
+ };
+ 
+-#ifdef __linux__
++#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || \
++    defined(__NetBSD__) || defined(__DragonFly__)
+ 
+ #define FSACCESS_CLASS LinuxFileSystemAccess
+ 
diff --git a/megacmd/patches/patch-sdk_src_posix_fs.cpp b/megacmd/patches/patch-sdk_src_posix_fs.cpp
new file mode 100644
index 0000000000..142a3deee5
--- /dev/null
+++ b/megacmd/patches/patch-sdk_src_posix_fs.cpp
@@ -0,0 +1,128 @@
+$NetBSD: patch-sdk_src_posix_fs.cpp,v 1.3 2025/02/15 07:40:14 wiz Exp $
+
+* Fix build on NetBSD, use statvfs
+* Don't use mntent features on BSDs
+* O_NOATIME not available on BSDs
+* BSDs use LinuxFileSystemAccess
+
+--- sdk/src/posix/fs.cpp.orig	2025-01-24 13:56:57.000000000 +0100
++++ sdk/src/posix/fs.cpp
+@@ -22,7 +22,8 @@
+  * You should have received a copy of the license along with this
+  * program.
+  */
+-#ifndef __APPLE__
++#if !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__OpenBSD__) && \
++    !defined(__NetBSD__) && !defined(__DragonFly__)
+ #include <mntent.h>
+ #endif // ! __APPLE__
+ 
+@@ -32,6 +33,9 @@
+ #include <sys/ioctl.h>
+ #include <sys/resource.h>
+ #include <sys/statvfs.h>
++#if defined(__NetBSD__)
++#define statfs statvfs
++#endif
+ #include <sys/types.h>
+ #include <sys/utsname.h>
+ #ifdef TARGET_OS_MAC
+@@ -818,7 +822,8 @@ PosixFileSystemAccess::PosixFileSystemAc
+     defaultfolderpermissions = 0700;
+ }
+ 
+-#ifdef __linux__
++#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || \
++    defined(__NetBSD__) || defined(__DragonFly__)
+ #ifdef ENABLE_SYNC
+ 
+ bool LinuxFileSystemAccess::initFilesystemNotificationSystem()
+@@ -878,7 +883,8 @@ bool PosixFileSystemAccess::cwd_static(L
+ 
+ // wake up from filesystem updates
+ 
+-#ifdef __linux__
++#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || \
++    defined(__NetBSD__) || defined(__DragonFly__)
+ void LinuxFileSystemAccess::addevents([[maybe_unused]] Waiter* waiter, int /*flags*/)
+ {
+ #ifdef ENABLE_SYNC
+@@ -1637,7 +1643,8 @@ void PosixFileSystemAccess::statsid(stri
+ }
+ 
+ #if defined(ENABLE_SYNC)
+-#if defined(__linux__)
++#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || \
++    defined(__NetBSD__) || defined(__DragonFly__)
+ 
+ LinuxDirNotify::LinuxDirNotify(LinuxFileSystemAccess& owner,
+                                LocalNode& /*root*/,
+@@ -1802,8 +1809,8 @@ private:
+     // open with O_NOATIME if possible
+     int open(const char *path)
+     {
+-#ifdef TARGET_OS_IPHONE
+-        // building for iOS, there is no O_NOATIME flag
++#ifndef O_NOATIME
++        // building for iOS and BSDs, there is no O_NOATIME flag
+         int fd = ::open(path, O_RDONLY) ;
+ #else
+         // for sync in particular, try to open without setting access-time
+@@ -2062,6 +2069,7 @@ ScanResult PosixFileSystemAccess::direct
+ }
+ 
+ #ifndef __APPLE__
++#if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__DragonFly__)
+ 
+ // Determine which device contains the specified path.
+ static std::string deviceOf(const std::string& database,
+@@ -2230,6 +2238,7 @@ static std::string deviceOf(const std::s
+     // No database has a mapping for this path.
+     return std::string();
+ }
++#endif
+ 
+ // Compute legacy filesystem fingerprint.
+ static std::uint64_t fingerprintOf(const std::string& path)
+@@ -2258,6 +2267,7 @@ static std::uint64_t fingerprintOf(const
+     return ++value;
+ }
+ 
++#if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__DragonFly__)
+ // Determine the UUID of the specified device.
+ static std::string uuidOf(const std::string& device)
+ {
+@@ -2334,6 +2344,7 @@ static std::string uuidOf(const std::str
+     // Couldn't determine device's UUID.
+     return std::string();
+ }
++#endif
+ 
+ fsfp_t FileSystemAccess::fsFingerprint(const LocalPath& path) const
+ {
+@@ -2344,6 +2355,7 @@ fsfp_t FileSystemAccess::fsFingerprint(c
+     if (!fingerprint)
+         return fsfp_t();
+ 
++#if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__DragonFly__)
+     // What device contains the specified path?
+     auto device = deviceOf(path.localpath);
+ 
+@@ -2360,6 +2372,7 @@ fsfp_t FileSystemAccess::fsFingerprint(c
+ 
+     LOG_warn << "Falling back to legacy filesystem fingerprint: "
+              << path;
++#endif
+ 
+     // Couldn't determine filesystem UUID.
+     return fsfp_t(fingerprint, std::string());
+@@ -2419,7 +2432,8 @@ unique_ptr<DirAccess>  PosixFileSystemAc
+     return unique_ptr<DirAccess>(new PosixDirAccess());
+ }
+ 
+-#ifdef __linux__
++#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || \
++    defined(__NetBSD__) || defined(__DragonFly__)
+ #ifdef ENABLE_SYNC
+ DirNotify* LinuxFileSystemAccess::newdirnotify(LocalNode& root,
+     const LocalPath& rootPath,
diff --git a/megacmd/patches/patch-src_megacmdcommonutils.cpp b/megacmd/patches/patch-src_megacmdcommonutils.cpp
new file mode 100644
index 0000000000..ae4df176ee
--- /dev/null
+++ b/megacmd/patches/patch-src_megacmdcommonutils.cpp
@@ -0,0 +1,16 @@
+$NetBSD: patch-src_megacmdcommonutils.cpp,v 1.1 2025/02/15 07:40:14 wiz Exp $
+
+* BSDs use the functions of linux
+
+--- src/megacmdcommonutils.cpp.orig	2025-02-07 09:43:13.320748794 +0100
++++ src/megacmdcommonutils.cpp
+@@ -1128,7 +1128,8 @@ bool isValidEmail(string email)
+                     || (email.find("@") > email.find_last_of(".")));
+ }
+ 
+-#ifdef __linux__
++#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || \
++    defined(__NetBSD__) || defined(__DragonFly__)
+ std::string getCurrentExecPath()
+ {
+     std::string path = ".";
diff --git a/megacmd/patches/patch-src_megacmdcommonutils.h b/megacmd/patches/patch-src_megacmdcommonutils.h
new file mode 100644
index 0000000000..1d19bbd721
--- /dev/null
+++ b/megacmd/patches/patch-src_megacmdcommonutils.h
@@ -0,0 +1,16 @@
+$NetBSD: patch-src_megacmdcommonutils.h,v 1.1 2025/02/15 07:40:14 wiz Exp $
+
+* BSDs use the functions of linux
+
+--- src/megacmdcommonutils.h.orig	2025-02-07 09:44:39.977015171 +0100
++++ src/megacmdcommonutils.h
+@@ -269,7 +269,8 @@ void sleepMilliSeconds(long microseconds
+ 
+ bool isValidEmail(std::string email);
+ 
+-#ifdef __linux__
++#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || \
++    defined(__NetBSD__) || defined(__DragonFly__)
+ std::string getCurrentExecPath();
+ #endif
+ 
diff --git a/megacmd/patches/patch-src_megacmdshell_megacmdshellcommunications.cpp b/megacmd/patches/patch-src_megacmdshell_megacmdshellcommunications.cpp
new file mode 100644
index 0000000000..8d6d3a848a
--- /dev/null
+++ b/megacmd/patches/patch-src_megacmdshell_megacmdshellcommunications.cpp
@@ -0,0 +1,15 @@
+$NetBSD: patch-src_megacmdshell_megacmdshellcommunications.cpp,v 1.2 2025/02/15 07:40:14 wiz Exp $
+
+* Fix include on BSDs
+
+--- src/megacmdshell/megacmdshellcommunications.cpp.orig	2024-05-20 12:29:43.000000000 +0000
++++ src/megacmdshell/megacmdshellcommunications.cpp
+@@ -55,7 +55,7 @@
+ #include <limits.h>
+ #endif
+ 
+-#ifdef __FreeBSD__
++#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__)
+ #include <netinet/in.h>
+ #endif
+ 


Home | Main Index | Thread Index | Old Index