diff --git a/net-misc/megacmd/Manifest b/net-misc/megacmd/Manifest new file mode 100644 index 0000000000..0975b392d4 --- /dev/null +++ b/net-misc/megacmd/Manifest @@ -0,0 +1,2 @@ +DIST megacmd-2.5.2.tar.gz 2123577 BLAKE2B 780115047fe509ebf3478a6c4534deb3d5fab2b74aa12ac1b9debfbf848973232f09f7185e2b9be8870d540e775cc3af767d287193dbaf0a03cc77063539b7d0 SHA512 14bae79eb8b6562bceab7be625cca71fc01f44dc4cdb72b443289e085fd87381c97f8867d9c44866c37354d83449df014b632bc30e7f00e895253f71fb7bd8d1 +DIST megacmd-sdk-2.5.2.tar.gz 4528326 BLAKE2B 0856a6f05f1a010f08e5520c1606500257efd01a6d594a68216497b5a4a6a58034a587c1b02627b1187f5eb0c0f5dade18be83e512af6d54b1bead746fdb556b SHA512 88d51c533d7db16800d4620714d19b4aa2a3e81f3354ceb083037728890558011e3bd4ac220433586f47a6bfb8f8dabca7fce004da9916f6d9e3d47946df7f6b diff --git a/net-misc/megacmd/files/megacmd-2.5.2-cmake4.patch b/net-misc/megacmd/files/megacmd-2.5.2-cmake4.patch new file mode 100644 index 0000000000..c99171e357 --- /dev/null +++ b/net-misc/megacmd/files/megacmd-2.5.2-cmake4.patch @@ -0,0 +1,13 @@ +Bump cmake_minimum_required to 3.16 to silence QA warnings. +This code isn't actually used. +--- a/sdk/cmake/vcpkg_overlay_ports/jxrlib/CMakeLists.txt ++++ b/sdk/cmake/vcpkg_overlay_ports/jxrlib/CMakeLists.txt +@@ -2,7 +2,7 @@ + # BSD (Same as jxrlib) + # Based on https://jxrlib.codeplex.com/discussions/440294 + # and modified for vcpkg packaging +-cmake_minimum_required(VERSION 2.8) ++cmake_minimum_required(VERSION 3.16) + project(jxrlib C) + + # Need shared libs for ABI diff --git a/net-misc/megacmd/files/megacmd-2.5.2-disable-vcpkg.patch b/net-misc/megacmd/files/megacmd-2.5.2-disable-vcpkg.patch new file mode 100644 index 0000000000..84284f000f --- /dev/null +++ b/net-misc/megacmd/files/megacmd-2.5.2-disable-vcpkg.patch @@ -0,0 +1,19 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -26,7 +26,6 @@ set(QT_CREATOR_SKIP_VCPKG_SETUP TRUE CACHE BOOL "") + 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") + + include(detect_host_architecture) + +@@ -39,7 +38,7 @@ execute_process( + ) + endif() + +-if((NOT WIN32 OR BASH_VERSION_RESULT EQUAL 0) AND NOT EXISTS ${VCPKG_ROOT}) ++if(0) + 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 diff --git a/net-misc/megacmd/files/megacmd-2.5.2-fix-link.patch b/net-misc/megacmd/files/megacmd-2.5.2-fix-link.patch new file mode 100644 index 0000000000..3ced7a3499 --- /dev/null +++ b/net-misc/megacmd/files/megacmd-2.5.2-fix-link.patch @@ -0,0 +1,33 @@ +Add missing links. +--- a/build/cmake/modules/megacmd_libraries.cmake ++++ b/build/cmake/modules/megacmd_libraries.cmake +@@ -16,10 +16,15 @@ 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() ++ ++ find_package(ZLIB REQUIRED) ++ target_link_libraries(LMegacmdServer PRIVATE ZLIB::ZLIB) ++ pkg_check_modules(readline IMPORTED_TARGET readline) ++ target_link_libraries(mega-cmd PRIVATE PkgConfig::readline) + endif() + + endmacro() +--- a/sdk/cmake/modules/sdklib_libraries.cmake ++++ b/sdk/cmake/modules/sdklib_libraries.cmake +@@ -110,8 +110,8 @@ macro(load_sdklib_libraries) + pkg_check_modules(curl REQUIRED IMPORTED_TARGET libcurl) + target_link_libraries(SDKlib PRIVATE PkgConfig::curl) + +- find_package(ICU COMPONENTS uc data REQUIRED) +- target_link_libraries(SDKlib PRIVATE ICU::uc ICU::data) ++ find_package(ICU COMPONENTS i18n uc data REQUIRED) ++ target_link_libraries(SDKlib PRIVATE ICU::i18n ICU::uc ICU::data) + + if(USE_OPENSSL) + find_package(OpenSSL REQUIRED) diff --git a/net-misc/megacmd/files/megacmd-2.5.2-fix-prefix.patch b/net-misc/megacmd/files/megacmd-2.5.2-fix-prefix.patch new file mode 100644 index 0000000000..9d9583e75a --- /dev/null +++ b/net-misc/megacmd/files/megacmd-2.5.2-fix-prefix.patch @@ -0,0 +1,26 @@ +Fix incorrect install path (/usr/usr/bin). +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -128,7 +127,7 @@ include(CMakePackageConfigHelpers) # For the CMake package + include(target_sources_conditional) # To add files to the project without building them + include(target_platform_compile_options) # To add compile options depeding on the platform + +-if(UNIX AND NOT APPLE) ++if(0) + # Set rpath and location for dirs accordingly: + # If CMAKE_INSTALL_PREFIX is set (not default), it will set rpath to to such prefix plus /opt/.... + # If CMAKE_INSTALL_PREFIX is not set, it will set rpath to /opt/.... +@@ -461,6 +460,7 @@ elseif(NOT WIN32) + PATTERN "python" EXCLUDE + PATTERN "win" EXCLUDE) + ++ if(0) + install(FILES "${CMAKE_CURRENT_LIST_DIR}/src/client/megacmd_completion.sh" + DESTINATION "etc/bash_completion.d" + ) +@@ -485,4 +485,5 @@ elseif(NOT WIN32) + PATTERN "*dylib*" #macOS + PATTERN "manual-link" EXCLUDE + PATTERN "pkgconfig" EXCLUDE) ++ endif() + endif() #not WIN32 diff --git a/net-misc/megacmd/files/megacmd-2.5.2-rename-libcryptopp.patch b/net-misc/megacmd/files/megacmd-2.5.2-rename-libcryptopp.patch new file mode 100644 index 0000000000..e5d6ea7edf --- /dev/null +++ b/net-misc/megacmd/files/megacmd-2.5.2-rename-libcryptopp.patch @@ -0,0 +1,11 @@ +--- a/sdk/cmake/modules/sdklib_libraries.cmake ++++ b/sdk/cmake/modules/sdklib_libraries.cmake +@@ -95,7 +95,7 @@ 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(sodium REQUIRED IMPORTED_TARGET libsodium) diff --git a/net-misc/megacmd/megacmd-2.5.2.ebuild b/net-misc/megacmd/megacmd-2.5.2.ebuild new file mode 100644 index 0000000000..17f01c87fc --- /dev/null +++ b/net-misc/megacmd/megacmd-2.5.2.ebuild @@ -0,0 +1,86 @@ +# Copyright 2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit bash-completion-r1 cmake flag-o-matic + +DESCRIPTION="Command Line Interactive and Scriptable Application to access MEGA" +HOMEPAGE="https://github.com/meganz/MEGAcmd" + +MEGA_SDK_REV="fae76a36d60484657fbdf442b7b917ccc4fbad77" # commit of sdk submodule +MEGA_TAG_SUFFIX="Linux" +SRC_URI=" + https://github.com/meganz/MEGAcmd/archive/refs/tags/${PV}_${MEGA_TAG_SUFFIX}.tar.gz -> ${P}.tar.gz + https://github.com/meganz/sdk/archive/${MEGA_SDK_REV}.tar.gz -> ${PN}-sdk-${PV}.tar.gz +" +S="${WORKDIR}"/MEGAcmd-${PV}_${MEGA_TAG_SUFFIX} + +LICENSE="BSD-2 GPL-3+" +SLOT="0" +KEYWORDS="~amd64" +IUSE="pcre" + +RDEPEND=" + dev-db/sqlite:3 + dev-libs/crypto++:= + dev-libs/icu:= + dev-libs/libsodium:= + dev-libs/libuv:= + dev-libs/openssl:= + net-misc/curl + sys-fs/fuse:3= + sys-libs/readline:= + virtual/zlib:= + pcre? ( dev-libs/libpcre ) +" +DEPEND=" + ${RDEPEND} +" +BDEPEND=" + virtual/pkgconfig +" + +PATCHES=( + "${FILESDIR}/${P}-cmake4.patch" + "${FILESDIR}/${P}-disable-vcpkg.patch" + "${FILESDIR}/${P}-fix-link.patch" + "${FILESDIR}/${P}-fix-prefix.patch" + "${FILESDIR}/${P}-rename-libcryptopp.patch" +) + +src_prepare() { + rmdir sdk || die + mv "${WORKDIR}/sdk-${MEGA_SDK_REV}" sdk || die + + cmake_src_prepare +} + +src_configure() { + # https://github.com/meganz/sdk/issues/2679 + append-cppflags -DNDEBUG + + local mycmakeargs=( + -DBUILD_SHARED_LIBS=OFF + -DFULL_REQS=OFF + -DUSE_FREEIMAGE=OFF + -DUSE_PCRE=$(usex pcre) + ) + cmake_src_configure +} + +src_install() { + cmake_src_install + + # https://github.com/meganz/MEGAcmd/blob/4b291975aafa7332ddfbf1a689455ebd972adff4/CMakeLists.txt#L468 + insinto /usr/lib/sysctl.d + newins - 30-megacmd-inotify-limit.conf <<<"fs.inotify.max_user_watches = 524288" + + newbashcomp src/client/megacmd_completion.sh mega-cmd + bashcomp_alias mega-cmd mega-{attr,backup,cancel,cat,cd,cmd-server,configure,confirm,confirmcancel,cp,login} \ + mega-{ftp,proxy,fuse-enable,ipc,sync,killsession,passwd,version,invite,log,mount,mv,https,session,share} \ + mega-{tree,sync-ignore,quit,fuse-add,mkdir,pwd,find,exec,transfers,signup,debug,lpwd,help,deleteversions} \ + mega-{sync-issues,exclude,preview,get,fuse-config,whoami,graphics,fuse-remove,webdav,sync-config,rm,reload} \ + mega-{thumbnail,du,put,df,users,permissions,userattr,errorcode,ls,mediainfo,lcd,fuse-disable,export,import} \ + mega-{showpcr,speedlimit,fuse-show,logout} +} diff --git a/net-misc/megacmd/metadata.xml b/net-misc/megacmd/metadata.xml new file mode 100644 index 0000000000..2cf4d896e8 --- /dev/null +++ b/net-misc/megacmd/metadata.xml @@ -0,0 +1,11 @@ + + + + + pastalian46@gmail.com + Takuya Wakazono + + + meganz/MEGAcmd + +