EionRobb / pidgin-xmpp-ignore-groups

Automatically exported from code.google.com/p/pidgin-xmpp-ignore-groups
5 stars 1 forks source link

how to install? #1

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
How do I create the .so file to compile and then install this plugin?

Original issue reported on code.google.com by tanim.is...@gmail.com on 23 Nov 2012 at 12:29

GoogleCodeExporter commented 8 years ago
I second this.
Could you kindly provide a Makefile ?
Or at least specify which files need to be included/compiled?

My current attempt at producing a .so ends with an 
"Error: undefined symbol: jabber_iq_signal_register".

Thank you very much.

Original comment by doktor....@gmail.com on 23 Nov 2012 at 6:25

GoogleCodeExporter commented 8 years ago
I tried compiling both with "make xmpp-ignore-groups.so" inside the source tree 
and with "gcc xmpp-ignore-groups.c -O2 -Wall -fpic `pkg-config --cflags 
glib-2.0` -I/usr/include/libpurple -L/usr/lib64/purple-2 -o 
xmpp-ignore-groups.so". Both cases led to failure. Anyone have any luck?

Original comment by pou...@gmail.com on 4 Dec 2012 at 9:30

GoogleCodeExporter commented 8 years ago
Oh, it looks like I just got it to work with the following:

gcc xmpp-ignore-groups.c /usr/lib64/purple-2/libjabber.so -O2 -Wall -fpic 
`pkg-config --cflags glib-2.0` -shared -I/usr/include/libpurple -o 
xmpp-ignore-groups.so

Original comment by pou...@gmail.com on 4 Dec 2012 at 9:34

GoogleCodeExporter commented 8 years ago
@pouyak: well, of course, what an idiot I am. I simply forgot to link against 
libjabber.

So for everybody else, here's my (updated, thanks to pouyak) Makefile:

(Note: I don't use hard coded paths like "/usr/lib64", but pkg-config's path, 
so the makefile should work, no matter where pidgin's lib purple is installed: 
"/usr/local", "/opt", "/usr/lib64", "/usr/lib32", etc.)

Original comment by doktor....@gmail.com on 8 Dec 2012 at 10:20

Attachments:

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
http://code.google.com/p/pidgin-xmpp-ignore-groups/issues/detail?id=2#c6

Original comment by br.renatosilva on 13 Dec 2012 at 2:22

GoogleCodeExporter commented 8 years ago
Can someone please post the linux64 .so?

Original comment by era...@gmail.com on 11 Jan 2013 at 10:15

GoogleCodeExporter commented 8 years ago
Here is my .so

But given the possible dependency problems, I would recommend *AGAINST* using 
it.

Better try my *Makefile* I posted in comment 4, and build you own.

Original comment by doktor....@gmail.com on 13 Jan 2013 at 7:20

Attachments:

GoogleCodeExporter commented 8 years ago
Hello. This is an awesome plugin. I have no idea why it is not included by 
default, it is essential for facebook.

My question is connected to compiling.
I was able to use the attached .so file, but anyhow I tried to compile it 
myself, it did not work.
At first it did not compile, but that I solved, so now I have even 2 ways to 
successfully compile it (with and without makefile). But my .so file shows an 
error in pidgin: "undefined symbol: jabber_iq_signal_register"

Do you know why is that ?

Original comment by bxa...@gmail.com on 27 Mar 2013 at 2:51

GoogleCodeExporter commented 8 years ago
You need to link your .so file against the libjabber plug-in.
(Obviously as this plug-in changes the behaviour of xmpp, it needs to call a 
few functions inside the jabber plug-in)

So either add it explicitly ('/usr/lib64/purple-2/libjabber.so') or use -l if 
it in your linker's library search  path ('-ljabber').

See my Makefile attached in comment number #4.

It would be nice if eionrobb could add this make file to the source, to help 
people compile the plugin.

Original comment by doktor....@gmail.com on 27 Mar 2013 at 7:00

GoogleCodeExporter commented 8 years ago
Hi. Thanks the answer. I don't have much experience with makefiles yet.
The Makefile from comment 4 did not work for me directly, I had to add 
"purple-2", "purple" alone did not work (not sure this is correct).
I give the command "make" and it compiles fine. But in pidgin I get the error 
"undefined symbol: jabber_iq_signal_register".
As I see the ljabber is inside, and I don't know where should I put the 
explixit path. Why it compiles if the linking is incorrect ?

Even though the attached .so from comment 8 works for me, maybe there are 
others like me who are not familiar with makefiles, so it could be good to 
clarify why this is not working. (if it matters, I mention that I use fedora 18)

thanks, cheers.

Original comment by bxa...@gmail.com on 28 Mar 2013 at 4:27

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
> Why it compiles if the linking is incorrect ?
Because its a dynamic library. It's not a self-contained executable.

You don't run pidgin by simply calling "libjabber.so". You don't call a game by 
simply calling SDL.

So there are symbols which aren't in one .so but could be elsewhere (in another 
.so, in the main executable). (the game will very probably also need symbols 
present in opengl and co). It's the job of the caller to make sure that 
everything is loaded.

Most of the time that works because a dynamic executable has a table of 
everything it needs and the dynamic loader will load all the necessary .so at 
run time. So by the time code in a given .so is called, all the needed symbol 
are here.

this plug-in is an exception, because it's a plug-in. It's not loaded by a 
dynamic loader when the dynamic executable is loaded. It's loaded much later 
when pidgin decides to load it. It's not a .so loaded at start time, it's a 
plugin that pidgin is free to load any time later it want. 

So it works like a self contained executable, if it doesn't have references to 
libjabber, it won't load it on its own.

> The Makefile from comment 4 did not work for me directly, I had to add 
"purple-2", "purple" alone did not work

Hm...  you mean the mention of "purple" at each call of "pkg-config"? (lines 3, 
7, 8) 
That's strange.
Could you please give me your output of the following command ?

pkg-config --list-all | grep purple

>  I don't know where should I put the explixit path

The way pouyak did it in comment #3 : instead of just "-ljabber" you give the 
whole path to the .so file. For exemple:
"/usr/lib64/purple-2/libjabber.so"

Note: This location may change depending on your distro, build tools and so on.
It might be "lib", "lib32" or "lib64", and it will be "/usr/local/lib.." or 
"/usr/lib.." depending on whether you compiled pidgin yourself or are using the 
official package from your distro.

Original comment by doktor....@gmail.com on 28 Mar 2013 at 5:27

GoogleCodeExporter commented 8 years ago
Hello. Your description helped, I understood more about the concept, I found 
the problem and fixed it.

I think the problem was specific to my computer, because in my purple folder I 
had libjabber.so.0 linked to libjabber.so.0.0, but no linkjabber.so link or 
file.
So I copied the libjabber.so.0.0 to linkjabber.so, and now the plugin compiles 
and works fine. (the same situation was with liboscar and libymsgr)

I guess the problem appeared because before I compiled and installed the 
complete pidgin from source, and uninstalled, and reinstalled the original. 
(because I planned to write this plugin before I found it :) ) 

So the original makefile from comment 4 is fine, I had a local problem here.
(the command output is: 
purple                      libpurple - libpurple is a GLib-based instant 
messenger library.)

Thanks, I enjoy now the self-compiled plugin, and I already shared a post on 
facebook about it :) I insist that this plugin has to be part of the default 
pidgin installation.

Original comment by bxa...@gmail.com on 28 Mar 2013 at 6:04

GoogleCodeExporter commented 8 years ago
I still don't exactly get what you substituted from "purple" to "purle-2"... 
The pkg-config is here and should provide the paths needed.

messed-up installation: yup, indeed, you're missing a few symlinks.

Original comment by doktor....@gmail.com on 28 Mar 2013 at 10:48

GoogleCodeExporter commented 8 years ago
Could somebody provide a 32 bit .so?
I can't make it myself (dependencies' issues).

Thanks in advance.

Original comment by goncalos...@gmail.com on 11 May 2013 at 12:22

GoogleCodeExporter commented 8 years ago
I managed to correct my dependences issue and compile a 32 bit .so .
So, here it is for anyone having any trouble compiling their own.

Original comment by goncalos...@gmail.com on 20 May 2013 at 12:10

Attachments: