# Gfire plugin for Pidgin



## Meister (Jun 29, 2010)

First let me start off by I'm completely new to FreeBSD. I've tried looking around, and there doesn't seem to be a way to install the gfire (xfire) plugin for Pidgin other then from source. Only problem is, I can't figure out how to do it. I know I need to do a ./configure, make, sudo make install. Only problem, I keep getting a "Error expanding embedded variable" message, and I can't successfully install the plugin.

Here's the output:


```
$ ./configure --prefix=/usr/X11R6/bin --libdir=/usr/X11R6/lib/
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... nawk
checking whether make sets $(MAKE)... yes
checking for sed... /usr/bin/sed
checking whether NLS is requested... yes
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... gcc3
checking for intltool-update... /usr/local/bin/intltool-update
checking for intltool-merge... /usr/local/bin/intltool-merge
checking for intltool-extract... /usr/local/bin/intltool-extract
checking for xgettext... /usr/local/bin/xgettext
checking for msgmerge... /usr/local/bin/msgmerge
checking for msgfmt... /usr/local/bin/msgfmt
checking for gmsgfmt... /usr/local/bin/msgfmt
checking for perl... /usr/bin/perl
checking for perl >= 5.8.1... 5.8.9
checking for XML::Parser... ok
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking locale.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
checking for LC_MESSAGES... yes
checking libintl.h usability... no
checking libintl.h presence... no
checking for libintl.h... no
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking dependency style of gcc... (cached) gcc3
checking for pkg-config... /usr/local/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for PURPLE... yes
checking for GTK... yes
checking for pkg-config... (cached) /usr/local/bin/pkg-config
checking pkg-config is at least version 0.16... yes
checking for GLIB - version >= 2.18.0... yes (version 2.20.5)
checking build system type... x86_64-unknown-freebsd8.0
checking host system type... x86_64-unknown-freebsd8.0
checking for a sed that does not truncate output... /usr/bin/sed
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 196608
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... no
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for ar... ar
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... freebsd8.0 ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating data/Makefile
config.status: creating pixmaps/Makefile
config.status: creating po/Makefile.in
config.status: creating gfire_config.h
config.status: gfire_config.h is unchanged
config.status: executing depfiles commands
config.status: executing default-1 commands
config.status: executing libtool commands
config.status: executing po/stamp-it commands

Configuration complete.

Debugging enabled.............: no
GTK enabled...................: yes
libnotify enabled.............: no
DBus status change enabled....: no
NLS enabled...................: yes

Libpurple package prefix......: /usr/local
Libpurple package libdir......: /usr/local/lib
Install prefix................: /usr/X11R6/bin
Install libdir................: /usr/X11R6/lib
Pidgin libdir detected........: yes

Type make to compile.
```


```
$ make
make  all-recursive
Making all in data
Making all in pixmaps
Making all in po
Error expanding embedded variable.
*** Error code 1

Stop in /usr/home/matt/Downloads/pidgin-gfire-0.9.2.
*** Error code 1

Stop in /usr/home/matt/Downloads/pidgin-gfire-0.9.2.
```

Could anyone help a newbie out?


----------



## gordon@ (Jun 29, 2010)

Try using gmake(1) instead of make. If you don't have gmake install the devel/gmake port.


----------



## Meister (Jun 30, 2010)

Thanks for the reply. I was able to get a little farther, but it still doesn't seem like it installed correctly. I couldn't really find any errors, but it's not showing up as installed. I did the ./configure, gmake, gmake install.


----------



## Meister (Jul 2, 2010)

I couldn't get the info before, but here's the results of my ./configure, gmake, gmake install


```
[matt@FreeBSDElite /usr/home/matt/pidgin-gfire-0.9.2]$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for sed... /usr/bin/sed
checking whether NLS is requested... yes
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... gcc3
checking for intltool-update... /usr/local/bin/intltool-update
checking for intltool-merge... /usr/local/bin/intltool-merge
checking for intltool-extract... /usr/local/bin/intltool-extract
checking for xgettext... /usr/local/bin/xgettext
checking for msgmerge... /usr/local/bin/msgmerge
checking for msgfmt... /usr/local/bin/msgfmt
checking for gmsgfmt... /usr/local/bin/msgfmt
checking for perl... /usr/bin/perl
checking for perl >= 5.8.1... 5.8.9
checking for XML::Parser... ok
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking locale.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
checking for LC_MESSAGES... yes
checking libintl.h usability... no
checking libintl.h presence... no
checking for libintl.h... no
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking dependency style of gcc... (cached) gcc3
checking for pkg-config... /usr/local/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for PURPLE... yes
checking for GTK... yes
checking for pkg-config... (cached) /usr/local/bin/pkg-config
checking pkg-config is at least version 0.16... yes
checking for GLIB - version >= 2.18.0... yes (version 2.24.1)
checking build system type... i386-unknown-freebsd8.0
checking host system type... i386-unknown-freebsd8.0
checking for a sed that does not truncate output... /usr/bin/sed
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 196608
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... no
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for ar... ar
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... freebsd8.0 ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating data/Makefile
config.status: creating pixmaps/Makefile
config.status: creating po/Makefile.in
config.status: creating gfire_config.h
config.status: executing depfiles commands
config.status: executing default-1 commands
config.status: executing libtool commands
config.status: executing po/stamp-it commands

Configuration complete.

Debugging enabled.............: no
GTK enabled...................: yes
libnotify enabled.............: no
DBus status change enabled....: no
NLS enabled...................: yes

Libpurple package prefix......: /usr/local
Libpurple package libdir......: /usr/local/lib
Install prefix................: /usr/local
Install libdir................: /usr/local/lib
Pidgin libdir detected........: yes
Type make to compile.
```


----------



## Meister (Jul 2, 2010)

Sorry, I couldn't figure out how to edit my post above, but the next two are too big to post in a message so here's a paste bin of them :

(gmake)
http://pastebin.com/xcSDAVMq

(gmake install)
http://pastebin.com/r59dv2mw


----------



## gordon@ (Jul 4, 2010)

Looks like it worked fine.


----------



## Meister (Jul 4, 2010)

Yes it does, which is odd because how the program works, if it installed correctly I should be able to choose xfire when adding a new account, but it's not giving me that option.


----------



## hux (Jun 8, 2011)

Firstly, I will apologize for the hack that is about to ensue, however at this point in my career I am unfortunately not a C programmer. So before you read any further... I'm terribly sorry. :-(

Running into this same problem, even in the newest trunk builds of gfire and pidgin on FreeBSD 8.1-RELEASE. After following the above instructions (on my own before finding this thread) the libxfire/gfire plugin compiles, and installs, but then if I run a:

`pidgin -d` 

The error I get is: 
	
	



```
libxfire.so is not loadable: Undefined symbol "open64"
```

Searching around the interwebs, I was unable to find any apparent relevant information that would help this situation. So I decided to take matters into my own hands.

Configuring pidgin-gfire-0.9.4 with these flags:

`./configure --enable-fast-install=no --disable-game-detection`

Which caused a warning: 


```
warning: implicit declaration of function 'ftruncate64' in src/gf_filetransfer.c
```

Just a warning! No big deal right? However, after a *gmake install* and when you run *pidgin -d* it gives an unresolved symbol in libxfire, referring to the ftruncate64.

So I modified the src/gf_filetransfer.c, and commented out the declaration on line #125:


```
121.    // Grow file to the full size
122.    #ifdef _WIN32
123.    if(_chsize(ft->file, ft->size) != 0)
124.    #else
125.     // if(ftruncate64(ft->file, ft->size) != 0)
126.    #endif // _WIN32
```

*gmake clean && gmake install* and poof, it works, connects and chats seem to be functional. I haven't tried doing a file transfer (I don't need Xfire for that) but I would assume that it wouldn't work, or would crash, or fail or something worse.

So again, much apologies for this awful hack, but it solves the problem for me and hopefully can help someone else. Better yet - hopefully someone else out there can add to this thread with a legit patch or solution to this issue.


----------



## gordon@ (Jun 8, 2011)

Ah, linuxisms. Just change ftruncate64 to ftruncate and it should work flawlessly. Additionally, submit that patch back to the maintainers, there shouldn't be a need to use ftruncate64 anymore.


----------



## hux (Jun 8, 2011)

Ah! Very nice! I have submitted the bug and patch to the gfireproject site. 
Thank you for your help


----------

