From 76dc4b668bf5065550e53e19d98974592b37fbb8 Mon Sep 17 00:00:00 2001 From: Peter Hoeg Date: Mon, 23 Sep 2019 11:05:43 +0800 Subject: amule: cleanup --- pkgs/tools/networking/p2p/amule/default.nix | 81 +++++---- pkgs/tools/networking/p2p/amule/upnp-1.8.patch | 230 ------------------------- 2 files changed, 50 insertions(+), 261 deletions(-) delete mode 100644 pkgs/tools/networking/p2p/amule/upnp-1.8.patch (limited to 'pkgs/tools/networking') diff --git a/pkgs/tools/networking/p2p/amule/default.nix b/pkgs/tools/networking/p2p/amule/default.nix index 0a240248806d..7f6aeace7b8c 100644 --- a/pkgs/tools/networking/p2p/amule/default.nix +++ b/pkgs/tools/networking/p2p/amule/default.nix @@ -2,28 +2,53 @@ , enableDaemon ? false # build amule daemon , httpServer ? false # build web interface for the daemon , client ? false # build amule remote gui -, fetchurl, stdenv, zlib, wxGTK, perl, cryptopp, libupnp, gettext, libpng ? null -, pkgconfig, makeWrapper, libX11 ? null }: +, fetchFromGitHub, fetchpatch, stdenv, lib, zlib, wxGTK, perl, cryptopp, libupnp, gettext, libpng ? null +, autoreconfHook, pkgconfig, makeWrapper, libX11 ? null }: assert httpServer -> libpng != null; assert client -> libX11 != null; -with stdenv; -mkDerivation rec { - name = "aMule-2.3.2"; +stdenv.mkDerivation rec { + pname = "amule"; + version = "2.3.2"; - src = fetchurl { - url = "mirror://sourceforge/amule/${name}.tar.xz"; - sha256 = "0a1rd33hjl30qyzgb5y8m7dxs38asci3kjnlvims1ky6r3yj0izn"; + src = fetchFromGitHub { + owner = "amule-project"; + repo = "amule"; + rev = version; + sha256 = "010wxm6g9f92x6fympj501zbnjka32rzbx0sk3a2y4zpih5d2nsn"; }; - buildInputs = - [ zlib wxGTK perl cryptopp libupnp gettext pkgconfig makeWrapper ] - ++ lib.optional httpServer libpng - ++ lib.optional client libX11; + patches = [ + (fetchpatch { + url = "https://patch-diff.githubusercontent.com/raw/amule-project/amule/pull/135.patch"; + sha256 = "1n24r1j28083b8ipbnh1nf6i4j6vx59pdkfl1c0g6bb4psx9wvvi"; + name = "libupnp_18.patch"; + }) + ]; + + postPatch = '' + substituteInPlace src/libs/ec/file_generator.pl \ + --replace /usr/bin/perl ${perl}/bin/perl + + # autotools expects these to be in the root + cp docs/{AUTHORS,README} . + cp docs/Changelog ./ChangeLog + cp docs/Changelog ./NEWS + ''; + + preAutoreconf = '' + pushd src/pixmaps/flags_xpm >/dev/null + ./makeflags.sh + popd >/dev/null + ''; - # See: https://github.com/amule-project/amule/issues/126 - patches = [ ./upnp-1.8.patch ]; + nativeBuildInputs = [ autoreconfHook gettext makeWrapper pkgconfig ]; + + buildInputs = [ + zlib wxGTK perl cryptopp libupnp + ] ++ lib.optional httpServer libpng + ++ lib.optional client libX11; enableParallelBuilding = true; @@ -31,27 +56,21 @@ mkDerivation rec { "--with-crypto-prefix=${cryptopp}" "--disable-debug" "--enable-optimize" - (stdenv.lib.enableFeature monolithic "monolithic") - (stdenv.lib.enableFeature enableDaemon "amule-daemon") - (stdenv.lib.enableFeature client "amule-gui") - (stdenv.lib.enableFeature httpServer "webserver") + (lib.enableFeature monolithic "monolithic") + (lib.enableFeature enableDaemon "amule-daemon") + (lib.enableFeature client "amule-gui") + (lib.enableFeature httpServer "webserver") ]; - postConfigure = '' - sed -i "src/libs/ec/file_generator.pl" \ - -es'|/usr/bin/perl|${perl}/bin/perl|g' - ''; - # aMule will try to `dlopen' libupnp and libixml, so help it # find them. postInstall = lib.optionalString monolithic '' - wrapProgram "$out/bin/amule" --prefix LD_LIBRARY_PATH ":" "${libupnp}/lib" + wrapProgram $out/bin/amule \ + --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libupnp ]} ''; - meta = { - homepage = http://amule.org/; + meta = with lib; { description = "Peer-to-peer client for the eD2K and Kademlia networks"; - longDescription = '' aMule is an eMule-like client for the eD2k and Kademlia networks, supporting multiple platforms. Currently aMule @@ -63,9 +82,9 @@ mkDerivation rec { applications. ''; - license = stdenv.lib.licenses.gpl2Plus; - - platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux; # arbitrary choice - maintainers = [ stdenv.lib.maintainers.phreedom ]; + homepage = "https://amule.org/"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ phreedom ]; + platforms = platforms.unix; }; } diff --git a/pkgs/tools/networking/p2p/amule/upnp-1.8.patch b/pkgs/tools/networking/p2p/amule/upnp-1.8.patch deleted file mode 100644 index 3f5502582a25..000000000000 --- a/pkgs/tools/networking/p2p/amule/upnp-1.8.patch +++ /dev/null @@ -1,230 +0,0 @@ ---- a/src/UPnPBase.cpp -+++ b/src/UPnPBase.cpp -@@ -29,22 +29,12 @@ - - #ifdef ENABLE_UPNP - --// check for broken Debian-hacked libUPnP - #include --#ifdef STRING_H // defined in UpnpString.h Yes, I would have liked UPNPSTRING_H much better. --#define BROKEN_DEBIAN_LIBUPNP --#endif - - #include "UPnPBase.h" - - #include // For transform() - --#ifdef BROKEN_DEBIAN_LIBUPNP -- #define GET_UPNP_STRING(a) UpnpString_get_String(a) --#else -- #define GET_UPNP_STRING(a) (a) --#endif -- - std::string stdEmptyString; - - const char s_argument[] = "argument"; -@@ -1127,7 +1117,7 @@ - - - // This function is static --int CUPnPControlPoint::Callback(Upnp_EventType EventType, void *Event, void * /*Cookie*/) -+int CUPnPControlPoint::Callback(Upnp_EventType EventType, const void *Event, void * /*Cookie*/) - { - std::ostringstream msg; - std::ostringstream msg2; -@@ -1149,24 +1139,24 @@ - msg2<< "UPNP_DISCOVERY_SEARCH_RESULT: "; - // UPnP Discovery - upnpDiscovery: -- struct Upnp_Discovery *d_event = (struct Upnp_Discovery *)Event; -+ UpnpDiscovery *d_event = (UpnpDiscovery *)Event; - IXML_Document *doc = NULL; - int ret; -- if (d_event->ErrCode != UPNP_E_SUCCESS) { -- msg << UpnpGetErrorMessage(d_event->ErrCode) << "."; -+ if (UpnpDiscovery_get_ErrCode(d_event) != UPNP_E_SUCCESS) { -+ msg << UpnpGetErrorMessage(UpnpDiscovery_get_ErrCode(d_event)) << "."; - AddDebugLogLineC(logUPnP, msg); - } - // Get the XML tree device description in doc -- ret = UpnpDownloadXmlDoc(d_event->Location, &doc); -+ ret = UpnpDownloadXmlDoc(UpnpDiscovery_get_Location_cstr(d_event), &doc); - if (ret != UPNP_E_SUCCESS) { - msg << "Error retrieving device description from " << -- d_event->Location << ": " << -+ UpnpDiscovery_get_Location_cstr(d_event) << ": " << - UpnpGetErrorMessage(ret) << - "(" << ret << ")."; - AddDebugLogLineC(logUPnP, msg); - } else { - msg2 << "Retrieving device description from " << -- d_event->Location << "."; -+ UpnpDiscovery_get_Location_cstr(d_event) << "."; - AddDebugLogLineN(logUPnP, msg2); - } - if (doc) { -@@ -1195,7 +1185,7 @@ - } - // Add the root device to our list - upnpCP->AddRootDevice(rootDevice, urlBase, -- d_event->Location, d_event->Expires); -+ UpnpDiscovery_get_Location_cstr(d_event), UpnpDiscovery_get_Expires(d_event)); - } - // Free the XML doc tree - IXML::Document::Free(doc); -@@ -1216,28 +1206,28 @@ - case UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE: { - //fprintf(stderr, "Callback: UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE\n"); - // UPnP Device Removed -- struct Upnp_Discovery *dab_event = (struct Upnp_Discovery *)Event; -- if (dab_event->ErrCode != UPNP_E_SUCCESS) { -+ UpnpDiscovery *dab_event = (UpnpDiscovery *)Event; -+ if (UpnpDiscovery_get_ErrCode(dab_event) != UPNP_E_SUCCESS) { - msg << "error(UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE): " << -- UpnpGetErrorMessage(dab_event->ErrCode) << -+ UpnpGetErrorMessage(UpnpDiscovery_get_ErrCode(dab_event)) << - "."; - AddDebugLogLineC(logUPnP, msg); - } -- std::string devType = dab_event->DeviceType; -+ std::string devType = UpnpDiscovery_get_DeviceType_cstr(dab_event); - // Check for an InternetGatewayDevice and removes it from the list - std::transform(devType.begin(), devType.end(), devType.begin(), tolower); - if (stdStringIsEqualCI(devType, UPnP::Device::IGW)) { -- upnpCP->RemoveRootDevice(dab_event->DeviceId); -+ upnpCP->RemoveRootDevice(UpnpDiscovery_get_DeviceID_cstr(dab_event)); - } - break; - } - case UPNP_EVENT_RECEIVED: { - //fprintf(stderr, "Callback: UPNP_EVENT_RECEIVED\n"); - // Event reveived -- struct Upnp_Event *e_event = (struct Upnp_Event *)Event; -- const std::string Sid = e_event->Sid; -+ UpnpEvent *e_event = (UpnpEvent *)Event; -+ const std::string Sid = UpnpEvent_get_SID_cstr(e_event); - // Parses the event -- upnpCP->OnEventReceived(Sid, e_event->EventKey, e_event->ChangedVariables); -+ upnpCP->OnEventReceived(Sid, UpnpEvent_get_EventKey(e_event), UpnpEvent_get_ChangedVariables(e_event)); - break; - } - case UPNP_EVENT_SUBSCRIBE_COMPLETE: -@@ -1252,16 +1242,15 @@ - //fprintf(stderr, "Callback: UPNP_EVENT_RENEWAL_COMPLETE\n"); - msg << "error(UPNP_EVENT_RENEWAL_COMPLETE): "; - upnpEventRenewalComplete: -- struct Upnp_Event_Subscribe *es_event = -- (struct Upnp_Event_Subscribe *)Event; -- if (es_event->ErrCode != UPNP_E_SUCCESS) { -+ UpnpEventSubscribe *es_event = (UpnpEventSubscribe *)Event; -+ if (UpnpEventSubscribe_get_ErrCode(es_event) != UPNP_E_SUCCESS) { - msg << "Error in Event Subscribe Callback"; - UPnP::ProcessErrorMessage( -- msg.str(), es_event->ErrCode, NULL, NULL); -+ msg.str(), UpnpEventSubscribe_get_ErrCode(es_event), NULL, NULL); - } else { - #if 0 - TvCtrlPointHandleSubscribeUpdate( -- GET_UPNP_STRING(es_event->PublisherUrl), -+ UpnpEventSubscribe_get_PublisherUrl_cstr(es_event), - es_event->Sid, - es_event->TimeOut ); - #endif -@@ -1280,29 +1269,29 @@ - msg << "error(UPNP_EVENT_SUBSCRIPTION_EXPIRED): "; - msg2 << "UPNP_EVENT_SUBSCRIPTION_EXPIRED: "; - upnpEventSubscriptionExpired: -- struct Upnp_Event_Subscribe *es_event = -- (struct Upnp_Event_Subscribe *)Event; -+ UpnpEventSubscribe *es_event = (UpnpEventSubscribe *)Event; - Upnp_SID newSID; - memset(newSID, 0, sizeof(Upnp_SID)); - int TimeOut = 1801; - int ret = UpnpSubscribe( - upnpCP->m_UPnPClientHandle, -- GET_UPNP_STRING(es_event->PublisherUrl), -+ -+ UpnpEventSubscribe_get_PublisherUrl_cstr(es_event), - &TimeOut, - newSID); - if (ret != UPNP_E_SUCCESS) { - msg << "Error Subscribing to EventURL"; - UPnP::ProcessErrorMessage( -- msg.str(), es_event->ErrCode, NULL, NULL); -+ msg.str(), UpnpEventSubscribe_get_ErrCode(es_event), NULL, NULL); - } else { - ServiceMap::iterator it = -- upnpCP->m_ServiceMap.find(GET_UPNP_STRING(es_event->PublisherUrl)); -+ upnpCP->m_ServiceMap.find(UpnpEventSubscribe_get_PublisherUrl_cstr(es_event)); - if (it != upnpCP->m_ServiceMap.end()) { - CUPnPService &service = *(it->second); - service.SetTimeout(TimeOut); - service.SetSID(newSID); - msg2 << "Re-subscribed to EventURL '" << -- GET_UPNP_STRING(es_event->PublisherUrl) << -+ UpnpEventSubscribe_get_PublisherUrl_cstr(es_event) << - "' with SID == '" << - newSID << "'."; - AddDebugLogLineC(logUPnP, msg2); -@@ -1321,17 +1310,16 @@ - case UPNP_CONTROL_ACTION_COMPLETE: { - //fprintf(stderr, "Callback: UPNP_CONTROL_ACTION_COMPLETE\n"); - // This is here if we choose to do this asynchronously -- struct Upnp_Action_Complete *a_event = -- (struct Upnp_Action_Complete *)Event; -- if (a_event->ErrCode != UPNP_E_SUCCESS) { -+ UpnpActionComplete *a_event = (UpnpActionComplete *)Event; -+ if (UpnpActionComplete_get_ErrCode(a_event) != UPNP_E_SUCCESS) { - UPnP::ProcessErrorMessage( - "UpnpSendActionAsync", -- a_event->ErrCode, NULL, -- a_event->ActionResult); -+ UpnpActionComplete_get_ErrCode(a_event), NULL, -+ UpnpActionComplete_get_ActionResult(a_event)); - } else { - // Check the response document - UPnP::ProcessActionResponse( -- a_event->ActionResult, -+ UpnpActionComplete_get_ActionResult(a_event), - ""); - } - /* No need for any processing here, just print out results. -@@ -1342,12 +1330,11 @@ - case UPNP_CONTROL_GET_VAR_COMPLETE: { - //fprintf(stderr, "Callback: UPNP_CONTROL_GET_VAR_COMPLETE\n"); - msg << "error(UPNP_CONTROL_GET_VAR_COMPLETE): "; -- struct Upnp_State_Var_Complete *sv_event = -- (struct Upnp_State_Var_Complete *)Event; -- if (sv_event->ErrCode != UPNP_E_SUCCESS) { -+ UpnpStateVarComplete *sv_event = (UpnpStateVarComplete *)Event; -+ if (UpnpStateVarComplete_get_ErrCode(sv_event) != UPNP_E_SUCCESS) { - msg << "m_UpnpGetServiceVarStatusAsync"; - UPnP::ProcessErrorMessage( -- msg.str(), sv_event->ErrCode, NULL, NULL); -+ msg.str(), UpnpStateVarComplete_get_ErrCode(sv_event), NULL, NULL); - } else { - #if 0 - // Warning: The use of UpnpGetServiceVarStatus and ---- a/src/UPnPBase.h -+++ b/src/UPnPBase.h -@@ -490,9 +490,19 @@ - // Callback function - static int Callback( - Upnp_EventType EventType, -- void* Event, -+ const void* Event, - void* Cookie); - -+#if UPNP_VERSION < 10800 -+ /* in libupnp 1.6 Event is not const */ -+ static int Callback( -+ Upnp_EventType EventType, -+ void* Event, -+ void* Cookie) { -+ return Callback(EventType, (const void *)Event, Cookie); -+ } -+#endif -+ - private: - void OnEventReceived( - const std::string &Sid, \ No newline at end of file -- cgit 1.4.1