aMule Forum

English => Compilation problems => Topic started by: Corin on May 01, 2012, 01:33:03 AM

Title: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: Corin on May 01, 2012, 01:33:03 AM
Builing of aMule v2.3.1 fails on i386 Debian Testing during compilation of  uPnP  Base module.


$PWD/configure --prefix=$X11_DIR  --enable-amule-daemon  --enable-webserver   --enable-amule-gui     --enable-geoip   --enable-mmap    --enable-optimize


checking for libupnp version >= 1.6.6... yes (version 1.8.0~svn20100401)


  **** aMule TextClient ****
  Should aMule Command Line Client be built?                 no

  **** aMule WebServer ****
  Should aMule WebServer be built?                           yes

  **** aMule ED2K Links Handler ****
  Should aMule ED2K Links Handler be built?                  yes

  **** aMuleLinkCreator ****
  Should aMuleLinkCreator GUI version (alc) be built?        no
  Should aMuleLinkCreator for console (alcc) be built?       no

  **** aMule Statistics ****
  Should C aMule Statistics (CAS) be built?                  no
  Should aMule GUI Statistics (wxCas) be built?              no
  Should xas XChat2 plugin be installed?                     no
  Should plasmaMule plasma-applet be build?                  no

  **** General Libraries and Tools ****
  Should ccache support be enabled?                          no
  Libraries aMule will use to build:
                             wxWidgets             2.8.12 (gtk2,shared)
                             crypto++              5.6.1 (installed, in /usr)
                             libupnp               1.8.0~svn20100401
                             libintl               system
                             libGeoIP              system
                             libpng                1.2.49
                             zlib                  1.2.6


Compiling UPnPBase.cpp
../../../src/UPnPBase.cpp: In constructor ‘CUPnPControlPoint::CUPnPControlPoint(short unsigned int)’:
../../../src/UPnPBase.cpp:871:37: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
../../../src/UPnPBase.cpp: In static member function ‘static int CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)’:
../../../src/UPnPBase.cpp:1189:14: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1186:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1190:56: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1186:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1194:35: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1186:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1197:12: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1186:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1203:12: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1186:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1236:13: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1186:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1236:32: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1186:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1258:16: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1257:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1260:52: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1257:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1264:34: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1257:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1268:38: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1257:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Discovery’
../../../src/UPnPBase.cpp:1276:34: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Event’
../../../src/UPnPBase.cpp:1275:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Event’
../../../src/UPnPBase.cpp:1278:39: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Event’
../../../src/UPnPBase.cpp:1275:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Event’
../../../src/UPnPBase.cpp:1278:58: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Event’
../../../src/UPnPBase.cpp:1275:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Event’
../../../src/UPnPBase.cpp:1295:15: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Event_Subscribe’
../../../src/UPnPBase.cpp:1293:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Event_Subscribe’
../../../src/UPnPBase.cpp:1298:24: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Event_Subscribe’
../../../src/UPnPBase.cpp:1293:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Event_Subscribe’
../../../src/UPnPBase.cpp:1327:12: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Event_Subscribe’
../../../src/UPnPBase.cpp:1321:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Event_Subscribe’
../../../src/UPnPBase.cpp:1333:24: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Event_Subscribe’
../../../src/UPnPBase.cpp:1321:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Event_Subscribe’
../../../src/UPnPBase.cpp:1336:39: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Event_Subscribe’
../../../src/UPnPBase.cpp:1321:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Event_Subscribe’
../../../src/UPnPBase.cpp:1342:14: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Event_Subscribe’
../../../src/UPnPBase.cpp:1321:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Event_Subscribe’
../../../src/UPnPBase.cpp:1363:14: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Action_Complete’
../../../src/UPnPBase.cpp:1361:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Action_Complete’
../../../src/UPnPBase.cpp:1366:12: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Action_Complete’
../../../src/UPnPBase.cpp:1361:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Action_Complete’
../../../src/UPnPBase.cpp:1367:12: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Action_Complete’
../../../src/UPnPBase.cpp:1361:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Action_Complete’
../../../src/UPnPBase.cpp:1371:12: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Action_Complete’
../../../src/UPnPBase.cpp:1361:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_Action_Complete’
../../../src/UPnPBase.cpp:1384:15: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_State_Var_Complete’
../../../src/UPnPBase.cpp:1382:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_State_Var_Complete’
../../../src/UPnPBase.cpp:1387:24: error: invalid use of incomplete type ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_State_Var_Complete’
../../../src/UPnPBase.cpp:1382:10: error: forward declaration of ‘struct CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)::Upnp_State_Var_Complete’
make[4]: *** [amuleweb-UPnPBase.o] Error 1
make[3]: *** [all-recursive] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2


This failure on the amd64 platform has been reported as Debian Bug #670962

<http://bugs.debian.ORG/cgi-bin/bugreport.cgi?bug=670962 (http://bugs.debian.ORG/cgi-bin/bugreport.cgi?bug=670962)>
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: Corin on May 01, 2012, 01:44:42 AM

Newer version of libupnp is required.

<http://forum.amule.ORG/index.php?topic=19000.0>
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: x_x_kamikaze_x_x on May 01, 2012, 01:56:10 AM
You have to use:
libupnp 1.6.6

Other version don't work.
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: Corin on May 01, 2012, 02:00:17 AM
You have to use:
libupnp 1.6.6

Other version don't work.

Sorry,  I should have written older version, not newer --

 apt-get install libupnp3 libupnp3-dev

The following packages will be REMOVED:
  libupnp4-dev


I thought this was a new issue when I did the web search and found the bug just reported on April 30th, 2012, but I should have searched more thoroughly here first before posting.
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: Corin on May 01, 2012, 02:10:23 AM
Incidentally, Debian are in the process of upgrading from libunp3 to libupn6 (sid then testing) so if amule is not going to move forward from libupnp3 at some time, this could mean that amule will no longer be available to Debian users unless they install the old libupn3 library and compile that and amule from source.

From  <http://bugs.debian.ORG/cgi-bin/bugreport.cgi?bug=655912 (http://bugs.debian.ORG/cgi-bin/bugreport.cgi?bug=655912)>

Quote

Sat, 14 Jan 2012 18:28:08 +0000

Upstream for libupnp has changed the soname for the stable branch from
libupnp3 to libupnp6, as a result of the ABI changes in version 1.6 over
the last few years.

As the maintainer of libupnp3 in Debian I am planning to follow this
transition.


Thus the question is, are the aMule developers preparing for a transition to  libupn6?
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: morph on May 01, 2012, 06:47:49 PM
Hello, i'm the Debian maintainer for amule - as already pointed out by Corin, the upcoming Debian release will ship libupnp6 (where 6 is the SONAME of the library) but amule is unable to build with it (as it's already been reported on the Debian BTS: http://bugs.debian.org/670962).

Are there any plan to update amule to the new libupnp ? Please also note that the debian archive freeze (so where only bigfixes will be accepted for the release) will start in 1-2 months. The only solutions I can see if amule can't cope with libupnp6 are: 1. remove amule from Debian release; 2. disable upnp. Both would be a shame for debian users.
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: x_x_kamikaze_x_x on May 02, 2012, 11:08:02 AM
Don't worry, I think Stu Redman or Kry
would find a nice solution.  8)

But they need PERSONAL TIME, in order
to spend it on this project (so you have to wait).  ;)

See you soon!  :)
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: morph on May 03, 2012, 09:01:44 AM
We got luck! A nice fellow Debian developer kindly prepared a patch to migrate amule to libupnp6: you can find it here: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=670962#17 - it would be nice if you'd give it a look, I'll be play with it this evening in order to see if it's ok-ish
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: morph on May 03, 2012, 07:39:07 PM
Even better, the Debian maintainer for libupnp has provided a patch himself, you can look at here: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=670962#29
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: morph on May 03, 2012, 09:47:24 PM
I've applied the last patch to amule debian package and it built fine and it's running since 1h (using upnp on the router).
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: Stu Redman on May 03, 2012, 09:56:50 PM
libuPnP was developed and integrated in aMule by Phoenix. Maybe he can comment on the issue.
I can't apply the patch to our source since it breaks compilation with libupnp3.
Why would you not keep the libupnp3 package?

You can of course apply the patch to your version of aMule. Just call it something else than 2.3.1 if you patch it, and mind that we (or at least I) do not support binaries built from modified sources.
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: morph on May 03, 2012, 09:59:04 PM
I can see your point, but from a distribution point of view, it's not possible to maintain multiple versions of the same library.
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: Stu Redman on May 03, 2012, 10:13:59 PM
I believe Ubuntu provides both libupnp3 and libupnp4 so it should be possible.
You could also patch libupnp6 with something like
Code: [Select]
class UpnpString {
  operator const char * () const { return UpnpString_get_String(this); }
to keep it backwards compatible.
(Mind, "something like". I didn't try it or even look at the source.)
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: Vollstrecker on May 03, 2012, 10:17:21 PM
Brealing compilation shouldn't be a problem, we solved this issue already for crypto++ where the new version needed an additional define. I'm out of time till at least 14th of May, but a version-check and ifdef should be implementable by some other guy, too. I know that at least Gonosztopi is able to do it right.
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: Stu Redman on May 04, 2012, 12:01:19 AM
Since we won't have a new version of aMule out until the Debian freeze and you won't and shouldn't ship an SVN version your patch will be the only solution anyway. Then we can find a way to support both libupnp versions (3 and 6) at leisure.

The important thing is not compilation, but rather if 6 works of course. If you have verified that I see no problem supporting it if there is some UPnP version define.

Still I'd like to see a comment by Phoenix on the subject since UPnP is his realm really. He is pretty much retired (like most devs, sigh), but I have contacted him.
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: morph on May 04, 2012, 12:06:02 AM
Yes it works for me, but upnp is a bad beast: the patched package already landed in the unstable branch of Debian, so I foresee more testing of the patch soon - so we'll know how/if it works on a wider audience.
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: GonoszTopi on May 08, 2012, 10:59:37 PM
aMule builds just fine with all the 1.6.x versions of libupnp (at least since 1.6.6 up to the current 1.6.17). According to phoenix the 1.8.x branch is unstable and has severe bugs.
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: morph on May 08, 2012, 11:01:47 PM
Are you referring to v2.3.1 or to the SVN version? because 2.3.1 can't be built with libupnp 1.6 (as verified in the mentioned debian bug and reported by the OP).
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: GonoszTopi on May 09, 2012, 08:45:33 PM
I'm referring to 2.3.1 (and the SVN version, too). I just built aMule-2.3.1 with both libupnp-1.6.6 and 1.6.17. I don't know what patches the debian guys applied to libupnp, but aMule compiles fine with the untouched tarballs from http://sourceforge.net/projects/pupnp/files/
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: GonoszTopi on May 09, 2012, 08:58:11 PM
Quote from: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=670962#29
I'm very sorry for ths oversight, I sneaked a last minute API change into
the libupnp6 package
before the transition and missed this place where it
requires a source change.

Now it clearly describes that it's their own patch that makes aMule compilation fail.
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: sarefo on May 12, 2012, 08:59:41 AM
hi guys,

i'm on debian testing, and after i updated all packages (a week or so ago), amuled is gone, because it now needs libupnp6, but installing that (upgrading from the existing libupnp3) would uninstall kde, which is not really an option :) is there any way to get amule working again, or, alternatively, does anybody know when this issue will be fixed?

thx!

s.
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: morph on May 12, 2012, 09:22:40 AM
Quote from: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=670962#29
I'm very sorry for ths oversight, I sneaked a last minute API change into
the libupnp6 package
before the transition and missed this place where it
requires a source change.

Now it clearly describes that it's their own patch that makes aMule compilation fail.

Now I see - thanks for looking into it
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: Stu Redman on May 12, 2012, 10:33:07 AM
installing that (upgrading from the existing libupnp3) would uninstall kde
I love distros.  :P

does anybody know when this issue will be fixed?
Wrong forum. You have to ask the Debian guys what they think they are doing.
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: morph on May 12, 2012, 10:42:10 AM
installing that (upgrading from the existing libupnp3) would uninstall kde
I love distros.  :P

eheh yeah, but it's worth noting that sarefo is using the testing branch, so even the name says it's in a "testing phase" ;)

Quote
does anybody know when this issue will be fixed?
Wrong forum. You have to ask the Debian guys what they think they are doing.

Yep, just ask in https://lists.debian.org/debian-user/ (or any other support forum you prefer) - please note that libupnp is under a transition, so it's somehow expected to break stuff.
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: phoenix on May 19, 2012, 01:08:26 PM
Hi Folks, sorry for taking so long to answer.

In first place, this issue is not new, it has happened not so long ago. This is because the folks Debian are using an unreleased version of the software in the official distro. As of March 19th, 2012, libUPnP 1.8.0 still does not exist. You can use it, of course, but please realize that you are on your own. The last release of libUPnP is 1.6.17.

Morph, the transition you mention is happening for years. Unfortunately, as in any open source project, we lack developers in libUPnP. This particular branch of the software is, as far as I know, untested. At least, no one has reported back to the developers that he/she is using 1.8.0 reliably. We get zero error reports on it and tons of error reports on 1.6.x, which has been under active development recently, mostly bug fixes.

I make sure that any bug fix applied to 1.6.x is also applied to 1.8.0 if it makes sense.

On the other hand, we might get something useful of this situation. If libUPnP 1.8.0 has been in use in Debian, it would be nice if someone told me what software is linking against it, and if you use any patch to pass it upstream. If I have reports of users and developers linking against it without problems, I'll gladly release the beast.

The whole point of 1.8.0 is to isolate the internal structures of the library, so that the developers can work without breaking the library API, which is a pain in the ass, as any distro maintainer knows.

Another point is that changing aMule to work with (the inexistent :P ) libUPnP 1.8.0 is likely to be very easy. I really currently have no resources to look into this right, sorry, but I am available to help someone willing to do it.

Chrees!
Title: Re: v2.3.1 compilation fails in uPnP Base on i386 Debian Testing
Post by: Vollstrecker on May 20, 2012, 12:09:11 AM
libupnp6
Reverse Depends:
  wmaloader
  vlc-nox
  gmediaserver
  djmount
  amule-daemon
  amule

These are in testing now, so at least they build, link and no sreious bugs have been reported.