aMule Forum

English => Compilation problems => Topic started by: AlphaC on February 09, 2008, 09:06:47 PM

Title: porting amule to arm architecture
Post by: AlphaC on February 09, 2008, 09:06:47 PM
hello, I'm going to try porting amuled and amuleweb to arm architecture (for a network appliance) using http://www.scratchbox.org, I would like to know from any developer if they know about any caveats and if there is any documentation for the sources, I've downloaded the sources tar, is there a way to strip out amuled and amuleweb sources  from the main amule  package?

thanks!
alphac
Title: Re: porting amule to arm architecture
Post by: wuischke on February 09, 2008, 09:27:57 PM
Rule of thumb: If wxwidgets work, then aMule should, too.

AMule runs at least on x86, x86_64, PowerPC and Sparc. I'm not aware of any particularities of ARM which wouldn't make it run on ARM, too.
Title: Re: porting amule to arm architecture
Post by: Kry on February 10, 2008, 02:30:53 AM
It  works on ARM, unless anything was broken after I retired.
Title: Re: porting amule to arm architecture
Post by: AlphaC on February 10, 2008, 04:23:32 AM
so does already exist an arm version? Anybody has the sources so I can get an idea about the differences?
Isn't wxwidgets only for gui? I just need amuled and amuleweb the machine on wich they will run is headless.

Title: Re: porting amule to arm architecture
Post by: wuischke on February 10, 2008, 10:46:32 AM
There's no special ARM version - the sources you've already downloaded work on ARM, too. (Unless something broke, of course) You should however use the current developmental version (amule.hirnriss.net).

You need wxBase (contains among others filesystem or networking functions) if you run both on a headless machine.
Please be aware that the wxBase tarball is a bit tricky to compile IIRC, it's easier to download wxAll and compile it with the --disable-gui option.
Title: Re: porting amule to arm architecture
Post by: lfroen on February 10, 2008, 10:22:19 PM
It  works on ARM, unless anything was broken after I retired.

Wrong. It does not work and it never did. I thought the same before buying NSLU2 (arm based NAS box). Result - broken compiler produce junk on floating point operations, which amule is full of.
So, theoretically it compiles. In practice result is not usable.
Title: Re: porting amule to arm architecture
Post by: Kry on February 10, 2008, 10:54:29 PM
Uh... lfroen, stop acting dumb, please. Lot of people have used aMule with NSLU2 along the years. We even had people creating binaries specifically for it. Use the search function.

If something is broken now, it must be fixed. If the compiler is broken, updates to the compiler or cross-compilation are in order. But aMule does work perfectly on ARM CPUs.

Title: Re: porting amule to arm architecture
Post by: Ramiro on February 10, 2008, 11:45:24 PM
I've been using amule on the NSLU2 for years. Now that Debian works flawlessly on the slug I've installed amule from the official Debian repositories and it works fine, of course.
Title: Re: porting amule to arm architecture
Post by: AlphaC on February 12, 2008, 01:56:22 AM
that's interesting cause I'd like to compile it (and eventually port it) for nas4220 http://en.nas-4220.org/
maybe someone already did some work...
however, I'll give a try this weekend.
Title: Re: porting amule to arm architecture
Post by: AlphaC on February 21, 2008, 11:40:12 PM
ok, before trying to reinvent the wheel again I wanted to copy debian amuled arm binaries on my nas, first I tried with a simple package "wget" + dependencies and everything worked ok. Now I've got some problems, I copied all dependencies and libraries on the nas, but when I run amuled I get this message:
/mnt/md1/apps/usr/bin/amuled: error while loading shared libraries: libstdc++.so.6: cannot handle TLS data

does arm arch support TLS??
Title: Re: porting amule to arm architecture
Post by: lfroen on February 22, 2008, 11:44:11 AM
Uh... lfroen, stop acting dumb, please. Lot of people have used aMule with NSLU2 along the years. We even had people creating binaries specifically for it. Use the search function.
My mistake. It looks like it actually works on NSLU, but only on full-blown debian, not on Unslug.
Title: Re: porting amule to arm architecture
Post by: lfroen on February 22, 2008, 11:46:20 AM
/mnt/md1/apps/usr/bin/amuled: error while loading shared libraries: libstdc++.so.6: cannot handle TLS data

does arm arch support TLS??

TLS is operating system concept, not hardware feature. IMHO - try to compile plain "hello world, c++" on your system. If it works, try again, now with WX. After both work, compile amuled.
Title: Re: porting amule to arm architecture
Post by: Kry on February 22, 2008, 12:08:49 PM
My mistake. It looks like it actually works on NSLU, but only on full-blown debian, not on Unslug.

Ramiro was compiling it on Unslug before debian, iirc.
Title: Re: porting amule to arm architecture
Post by: lfroen on February 22, 2008, 06:56:43 PM
Quote from: Kry link=topic=14411.msg76576#msg76576 date=12036785
Ramiro was compiling it on Unslug before debian, iirc.
[/quote
Nop (checked with Ramiro).
Title: Re: porting amule to arm architecture
Post by: Ramiro on February 28, 2008, 12:11:56 AM
It was on OpenSlug. Both OpenSlug and Unslug run the processor in big endian mode, but Unslug is basically the original firmware, with a very old kernel and libc.
Title: Re: porting amule to arm architecture
Post by: Josef K. on April 07, 2008, 08:43:05 PM
I'm trying to compile it on a mybook world edition (ARM9)
I succesfully compiled libpng, libgd, wxwidget and binutils
then I tried to compile amule --enable-amulecmd --enable-webserver --disable-monolithic --enable-amule-daemon --disable-backtrace --disable-debug --enable-optimise
but got this error

Code: [Select]
MuleDebug.cpp:36:23: execinfo.h: No such file or directory
MuleDebug.cpp: In function `wxString get_backtrace(unsigned int)':
MuleDebug.cpp:291: error: `backtrace' undeclared (first use this function)
MuleDebug.cpp:291: error: (Each undeclared identifier is reported only once for each function it appears in.)
MuleDebug.cpp:296: error: `backtrace_symbols' undeclared (first use this function)
make[4]: *** [libmulecommon_a-MuleDebug.o] Error 1
make[4]: Leaving directory `/opt/aMule-2.1.3/src/libs/common'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/opt/aMule-2.1.3/src/libs'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/opt/aMule-2.1.3/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/opt/aMule-2.1.3'
make: *** [all] Error 2

any idea how could I fix it?
Title: Re: porting amule to arm architecture
Post by: GonoszTopi on April 07, 2008, 08:50:15 PM
Grab the latest SVN version of amule. This bug is already fixed.
Title: Re: porting amule to arm architecture
Post by: Josef K. on April 08, 2008, 10:04:53 PM
TKS a lot :)
but now I got another problem
new amule versions require crypto libraries, so I'm trying to compile it but the system go in loop every time it arrive at making dll.cpp :(
is there anything that could I remove\modify in crypto package that would fix it and still let me install amule?
Title: Re: porting amule to arm architecture
Post by: wuischke on April 09, 2008, 01:25:24 AM
Please post the error message here, maybe we can help you to fix the problem.
Title: Re: porting amule to arm architecture
Post by: Josef K. on April 09, 2008, 09:33:36 AM
compiling amuled
Code: [Select]
./configure --enable-amulecmd --enable-webserver --disable-monolithic --enable-amule-daemon --disable-backtrace --disable-debug --enable-optimi
I got this

Code: [Select]
checking for gdlib-config... no
configure:
        WARNING: gd-lib >= 2.0.0, or a functional gd.h (from gd-devel) not found.
        Please check that gdlib-config is in your default path, check out
        LD_LIBRARY_PATH or equivalent variable.
        Or this might also be that your gdlib-config has other name.
        Please try again with --with-gdlib-config=/usr/bin/gdlib-config
        (replace /usr/bin/gdlib-config with a valid path to your gdlib-config).
        If you use compiled packages check if you have devel pack installed.
        To download the latest version check http://www.boutell.com/gd
        for sources.

but since it's releated to graphics on the nas and I'll use just daemon&webui I guess it won't be a problem

but I also got this

Code: [Select]
checking for crypto++ version >= 5.1... configure: error:
        Could not find cryptopp header file "cryptlib.h".
        Please check if the path "/usr" is valid.

so, as suggested in the wiki, I've downloaded cryptopp552.zip

then I tryed to compile (make) it

I don't get specific error during making but simply there're a lot of files (like dll.*, fipstest.*) that loop the system (I've left the nas compiling for almost a day and it was still working on those file)
since crypto++ package seems to me modular I wonder if I could remove some unneeded files from cryptopp (not used in amuled) before compiling crypto, or if I can compile amule without crypto...
Title: Re: porting amule to arm architecture
Post by: wuischke on April 09, 2008, 09:45:00 AM
Did you extract it using "unzip -a cryptopp552.zip"? Which version of (GNU) make do you use?

gd lib is used by amuleweb for image creation, so it's recommendable to install it.
Title: Re: porting amule to arm architecture
Post by: Josef K. on April 09, 2008, 06:34:56 PM
Did you extract it using "unzip -a cryptopp552.zip"?

yes

Quote
Which version of (GNU) make do you use?

just upgraded to 3.81-1 (just in case)

Quote
gd lib is used by amuleweb for image creation, so it's recommendable to install it.

I've installed it (2.0.33) but got the same error

Code: [Select]
        WARNING: gd-lib >= 2.0.0, or a functional gd.h (from gd-devel) not found.
        Please check that gdlib-config is in your default path, check out
        LD_LIBRARY_PATH or equivalent variable.
        Or this might also be that your gdlib-config has other name.
        Please try again with --with-gdlib-config=/usr/bin/gdlib-config
        (replace /usr/bin/gdlib-config with a valid path to your gdlib-config).
        If you use compiled packages check if you have devel pack installed.
        To download the latest version check http://www.boutell.com/gd
        for sources.

how about crypto?
Title: Re: porting amule to arm architecture
Post by: wuischke on April 09, 2008, 07:03:28 PM
I'm out of ideas regarding cryptopp. I've tried it on several (x86 based) operating systems and I could always get it to work or at least got a decent error message. A loop should only happen with a badly written makefile, but I couldn't find anything which could cause this.

Regarding gd: Is there some kind of gd-devel package for your distribution?
Title: Re: porting amule to arm architecture
Post by: Josef K. on April 09, 2008, 07:31:33 PM
it's an embedded linux inside a mybook world edition (it use optware)
but I've already compiled the tarball so I wonder what's missing (or why amule don't recognize the path)
about crypto I'm trying simply remove from the compiling directory files that make the system loop and hope it will work
of course if anybody could provide me an already compiled (ARM9) ipk, it will really make my day ^_^

BTW
Code: [Select]
ls -l /usr/local/bin/wx*

lrwxrwxrwx 1 root root 49 Apr  7 21:14 /usr/local/bin/wx-config -> /usr/local/lib/wx/config/base-unicode-release-2.8
Title: Re: porting amule to arm architecture
Post by: Josef K. on April 10, 2008, 10:29:49 PM
it definetly seems amule don't like my nas :(
since I can't find a way to install crypto++ I kept searching for an ARM compiled package, and today I found it here:http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/ (http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/)
it's an old version, but old is better than nothing  ::)
so I installed it, installation went smootly, and I started amuled
Code: [Select]
-bash: /opt/bin/amuled: No such file or directoryand of course amuled is already in opt/bin  ???
I wonder if I'll eventually find a way to install amule  :'(
Title: Re: porting amule to arm architecture
Post by: lfroen on April 11, 2008, 07:00:55 PM
The only way to install amule on uncommon hardware (like yours) is to find a way to compile it yourself. There's plenty of info about setting up cross-compiling environment for ARM. Debian have all packages already precompiled (emdebian project).
FYI: on NSLU optware packages are broken.
Title: Re: porting amule to arm architecture
Post by: Josef K. on April 25, 2008, 11:17:35 AM
since crypto++ can't be compiled for my ARM nas (mybook)
Code: [Select]
g++ -DNDEBUG -g -O2 -pipe -c validat2.cpp
g++: Internal error: Killed (program cc1plus)
Please submit a full bug report.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
make: *** [validat2.o] Error 1
{standard input}: Assembler messages:
{standard input}:263363: Warning: end of file not at end of a line; newline inse                                             rted
{standard input}:263479: Error: unknown pseudo-op: `.lbe27175'

unless there's out there an amuled version that can be compiled without crypto++ (like it used to be)

I guess I should give up with amuled  :'(
Title: Re: porting amule to arm architecture
Post by: lfroen on April 25, 2008, 12:45:37 PM
Quote
unless there's out there an amuled version that can be compiled without crypto++ (like it used to be)

The problem is that your NAS doesn't have enough memory to compile cryptopp. You have to setup cross-compiling environment. Didn't I say it already?! Go to www.emdebian.org (http://www.emdebian.org) for istructions
Title: Re: porting amule to arm architecture
Post by: Connor32 on June 23, 2008, 11:16:25 PM
Hi all,

I have a Buffalo linkstation live NAS (arm9 processor) and I installed freelink (debian) on it.
I upgraded to debian unstable (sid).
I was able to compile wxwidgets 2.8.7 ( --no-gui option, and --enable-unicode) and I was also able to compile amuled 2.2.1 (./configure --disable-monolithic --enable-amule-daemon --disable-upnp).
As soon as I start amuled I get a segmentation fault.
The compilation has been done natively on the NAS. I have been using amule 2.1.3 on the same NAS but I would like to get the benefits of the new version.
Any help/ideas?

Thanks!


C.
Title: Re: porting amule to arm architecture
Post by: Connor32 on June 24, 2008, 09:11:09 AM
That's weird.

Now I get problems also with the 2.1.3, recompiled after the dist-upgrade:

Code: [Select]
Current version is: aMuled 2.1.3 AdunanzA using wxGTK2 v2.6.3 (Unicoded)
Running on: Linux 2.6.12.6-arm1 armv5tejl


[2] CamuleApp::OnFatalException() in amule.cpp:1195
[3] wxFatalSignalHandler in /usr/lib/libwx_baseu-2.6.so.0[0x401a61c8]
[4] wxMsgCatalogFile::FillHash(wxMessagesHash&, wxString const&, bool) const in /usr/lib/libwx_baseu-2.6.so.0[0x40130c94]
[5] wxMsgCatalog::Load(wchar_t const*, wchar_t const*, wchar_t const*, bool) in  /usr/lib/libwx_baseu-2.6.so.0[0x40133020]
[6] wxLocale::AddCatalog(wchar_t const*, wxLanguage, wchar_t const*) in /usr/lib/libwx_baseu-2.6.so.0[0x40133208]
[7] wxLocale::AddCatalog(wchar_t const*) in /usr/lib/libwx_baseu-2.6.so.0[0x40133584]
[8] CamuleApp::Localize_mule() in amule.cpp:1204
[9] CamuleApp::OnInit() in amule.cpp:623
[10] wxDateTime::Format(wchar_t const*, wxDateTime::TimeZone const&) const in amuled.cpp:469
[11] wxAppConsole::CallOnInit() in app.h:87
[12] wxEntry(int&, wchar_t**) in /usr/lib/libwx_baseu-2.6.so.0[0x401275ac]
[13] main in amuled.cpp:132
[14] __libc_start_main in /lib/libc.so.6[0x4038506c]
Title: Re: porting amule to arm architecture
Post by: GonoszTopi on June 24, 2008, 10:06:55 AM
Current version is: aMuled 2.1.3 AdunanzA using wxGTK2 v2.6.3 (Unicoded)
Running on: Linux 2.6.12.6-arm1 armv5tejl

Mind you, you're using an aMule mod. Please post a backtrace of the crash of the official 2.2.1 client in the appropriate forum section (http://forum.amule.org/index.php?board=33.0), and we might be able to help you.
Title: Re: porting amule to arm architecture
Post by: Connor32 on June 24, 2008, 10:31:47 AM
Thanks for your reply.

Just a quick question: how should I compile amule to be able to get the backtrace? ( --enable-debug ? )

C.
Title: Re: porting amule to arm architecture
Post by: Festor on June 24, 2008, 10:46:44 AM
You should use --enable-debug
Title: Re: porting amule to arm architecture
Post by: Connor32 on June 25, 2008, 08:52:30 PM
Nevermind, I downgraded to Debian stable and recompiled everything from scratch. (wxGTK 2.8.7, g++ 3.4)
Amuled is working perfectly.

Thanks!

C.