How to Build Pidgin 3.0.0 for Windows on Ubuntu 14.04 amd64

Tomasz Wasilczyk twasilczyk at pidgin.im
Thu Mar 19 12:03:58 EDT 2015


Hi Harald,

please note, that Pidgin source isn't the one which loads socket.h.
It's NSPR headers of your base OS (not mingw's NSPR!). In short, there
is no "socket problem" at all.

The problem is, your configure script has set include paths to your
OS, instead of mingw. Why? Because pkg-config doesn't scan mingw
packages (because you still didn't set PKG_CONFIG_PATH), but base OS
packages.

If defining PKG_CONFIG_PATH in way described in our wiki doesn't work,
that means Ubuntu located pkgconfig/*.pc files in some other location
- you need to find it. If you fail to, you can try OpenSUSE with mingw
repo added (see software.opensuse.org) - it works for me just fine.

Tomek

2015-03-19 10:34 GMT+01:00 Harald Schieche <rehs at gmx.de>:
> Hello Tomek!
>
>> What do you mean, by "Pidgin needs unix sockets"?
>
> pidgin3 at rehs-Lenovo-B50-45:~$ cd pidgin-main
> pidgin3 at rehs-Lenovo-B50-45:~/pidgin-main$ make
> make  all-recursive
> make[1]: Entering directory `/home/pidgin3/pidgin-main'
> Making all in .
> make[2]: Entering directory `/home/pidgin3/pidgin-main'
>   GEN      package_revision_raw.txt
> make[2]: Leaving directory `/home/pidgin3/pidgin-main'
> Making all in m4macros
> make[2]: Entering directory `/home/pidgin3/pidgin-main/m4macros'
> make[2]: Nothing to be done for `all'.
> make[2]: Leaving directory `/home/pidgin3/pidgin-main/m4macros'
> Making all in libpurple
> make[2]: Entering directory `/home/pidgin3/pidgin-main/libpurple'
> make  all-recursive
> make[3]: Entering directory `/home/pidgin3/pidgin-main/libpurple'
> Making all in data/gconf
> make[4]: Entering directory `/home/pidgin3/pidgin-main/libpurple/data/gconf'
> make[4]: Nothing to be done for `all'.
> make[4]: Leaving directory `/home/pidgin3/pidgin-main/libpurple/data/gconf'
> Making all in .
> make[4]: Entering directory `/home/pidgin3/pidgin-main/libpurple'
>   CC       ciphers/aescipher.lo
> In file included from ./win32/libc_interface.h:34:0,
>                  from ./win32/win32dep.h:33,
>                  from ./internal.h:134,
>                  from ciphers/aescipher.c:25:
> ./glibcompat.h:164:0: warning: "g_stat" redefined [enabled by default]
>  #  define g_stat purple_g_stat
>  ^
> In file included from ./internal.h:131:0,
>                  from ciphers/aescipher.c:25:
> /usr/include/glib-2.0/glib/gstdio.h:68:0: note: this is the location of the previous definition
>  #define g_stat    stat
>  ^
> In file included from /usr/include/nspr/prio.h:19:0,
>                  from /usr/include/nss/certt.h:18,
>                  from /usr/include/nss/pk11pub.h:11,
>                  from ciphers/aescipher.c:41:
> /usr/include/nspr/prinet.h:37:39: fatal error: sys/socket.h: No such file or directory
>  #include <sys/socket.h>  /* AF_INET */
>                                        ^
> compilation terminated.
> make[4]: *** [ciphers/aescipher.lo] Error 1
> make[4]: Leaving directory `/home/pidgin3/pidgin-main/libpurple'
> make[3]: *** [all-recursive] Error 1
> make[3]: Leaving directory `/home/pidgin3/pidgin-main/libpurple'
> make[2]: *** [all] Error 2
> make[2]: Leaving directory `/home/pidgin3/pidgin-main/libpurple'
> make[1]: *** [all-recursive] Error 1
> make[1]: Leaving directory `/home/pidgin3/pidgin-main'
> make: *** [all] Error 2
> pidgin3 at rehs-Lenovo-B50-45:~/pidgin-main$
>
>
>> I don't know how Ubuntu names its cross tools. Maybe cross-pkg-config
>> is already installed with some other package?
> Indeed, /usr/bin/i686-w64-mingw32-pkg-config is existing. I export PKG_CONFIG. But it has no effect to the missing socket.h . And I have really no idea, how to define PKG_CONFIG_PATH.
> pidgin3 at rehs-Lenovo-B50-45:~$ cd /usr/i686-w64-mingw32/
> pidgin3 at rehs-Lenovo-B50-45:/usr/i686-w64-mingw32$ ls
> include  lib
> pidgin3 at rehs-Lenovo-B50-45:/usr/i686-w64-mingw32$ ls include/pkgconfig
> ls: cannot access include/pkgconfig: No such file or directory
> pidgin3 at rehs-Lenovo-B50-45:/usr/i686-w64-mingw32$ ls lib/pkgconfig
> ls: cannot access lib/pkgconfig: No such file or directory
>
> What is your OS? Maybe I have to move to it. I am very surprised, that you solved the socket-problem! Where did your cross-compiler find socket.h? It's provided by cygwin on windows, I think.
>
> Best regards from Berlin,
> Harald
>
>
>> Gesendet: Dienstag, 17. März 2015 um 20:53 Uhr
>> Von: "Tomasz Wasilczyk" <twasilczyk at pidgin.im>
>> An: "Harald Schieche" <rehs at gmx.de>
>> Cc: "Tomasz Wasilczyk" <twasilczyk at pidgin.im>, devel at pidgin.im
>> Betreff: Re: How to Build Pidgin 3.0.0 for Windows on Ubuntu 14.04 amd64
>>
>> What do you mean, by "Pidgin needs unix sockets"? A correct
>> configuration (with proper pkg-config paths) should compile
>> out-of-the-box.
>>
>> I don't know how Ubuntu names its cross tools. Maybe cross-pkg-config
>> is already installed with some other package? You need to find out,
>> which package provides pkg-config suitable for mingw.
>>
>> Tomek
>>
>> 2015-03-17 16:32 GMT+01:00 Harald Schieche <rehs at gmx.de>:
>> > Hi Tomek,
>> >
>> > thank you for your quick response!
>> >
>> >> To be specific, you mixed your base OS pkgconfig with mingw's
>> >> gcc/libs/headers. Don't forget to set PKG_CONFIG vars.
>> > Sorry, but I could not find something like mingw32-cross-pkg-config on Ubuntu.
>> >
>> > But first I have a compile time problem:
>> > MinGW does not provide unix socket interface but Pidgin needs it.
>> > How to handle this?
>> >
>> > Regards,
>> > Harald
>> >
>> >> Gesendet: Montag, 16. März 2015 um 18:08 Uhr
>> >> Von: "Tomasz Wasilczyk" <twasilczyk at pidgin.im>
>> >> An: rehs at gmx.de
>> >> Cc: devel at pidgin.im
>> >> Betreff: Re: How to Build Pidgin 3.0.0 for Windows on Ubuntu 14.04 amd64
>> >>
>> >> Hi,
>> >>
>> >> please follow instructions on our wiki (the easy way):
>> >> https://developer.pidgin.im/wiki/BuildingWinPidgin/3.0.0
>> >>
>> >> To be specific, you mixed your base OS pkgconfig with mingw's
>> >> gcc/libs/headers. Don't forget to set PKG_CONFIG vars.
>> >>
>> >> Tomek
>> >>
>> >>
>> >> 2015-03-16 13:49 GMT+01:00  <rehs at gmx.de>:
>> >> > - Compile time error, see below
>> >> >
>> >> > 1. Install Ubuntu 14.04
>> >> > 2. Install Ubuntu updates
>> >> > 3. Install Mercurial
>> >> > sudo apt-get install mercurial
>> >> > 4. Clone Pidgin sources
>> >> > hg clone https://hg.pidgin.im/pidgin/main pidgin-main
>> >> > 5. Search MinGW32
>> >> > sudo apt-get install apt-file
>> >> > apt-file update
>> >> > apt-file search mingw32
>> >> > 6. Install MinGW32
>> >> > sudo apt-get install binutils-mingw-w64-i686
>> >> > sudo apt-get install binutils-mingw-w64-x86-64
>> >> > sudo apt-get install g++-mingw-w64-i686
>> >> > sudo apt-get install g++-mingw-w64-x86-64
>> >> > sudo apt-get install gdb-mingw-w64
>> >> > sudo apt-get install gnat-mingw-w64-i686
>> >> > sudo apt-get install gnat-mingw-w64-x86-64
>> >> > sudo apt-get install gobjc-mingw-w64-i686
>> >> > sudo apt-get install gobjc-mingw-w64-x86-64
>> >> > sudo apt-get install mingw-w64-i686-dev
>> >> > sudo apt-get install mingw-w64-tools
>> >> > sudo apt-get install mingw32
>> >> > sudo apt-get install ocaml-mingw-w64-i686
>> >> > sudo apt-get install ocaml-mingw-w64-x86-64
>> >> > 7. Install build requirements
>> >> > sudo apt-get build-dep pidgin
>> >> > sudo apt-get install libwebkit2gtk-3.0-dev
>> >> > sudo apt-get install libwebkitgtk-3.0-dev
>> >> > sudo apt-get install libwebkitgtk-dev
>> >> > sudo apt-get install libjson-glib-dev
>> >> > 8. Generate configure script
>> >> > cd pidgin-main/
>> >> > NOCONFIGURE=indeed ./autogen.sh
>> >> > 9. Run configure
>> >> > ./configure --host=i686-w64-mingw32 --with-win32-dirs=fhs
>> >> > 10. Compile
>> >> > make
>> >> > 11. Error from compiler
>> >> > make[4]: Entering directory `/home/rehs/pidgin-main/libpurple'
>> >> >   CC       buddyicon.lo
>> >> > In file included from win32/libc_interface.h:34:0,
>> >> >                  from win32/win32dep.h:33,
>> >> >                  from internal.h:134,
>> >> >                  from buddyicon.c:23:
>> >> > ./glibcompat.h:164:0: warning: "g_stat" redefined [enabled by default]
>> >> >  #  define g_stat purple_g_stat
>> >> >  ^
>> >> > In file included from internal.h:131:0,
>> >> >                  from buddyicon.c:23:
>> >> > /usr/include/glib-2.0/glib/gstdio.h:68:0: note: this is the location of the previous definition
>> >> >  #define g_stat    stat
>> >> >  ^
>> >> > buddyicon.c: In function 'purple_buddy_icon_data_cache':
>> >> > buddyicon.c:168:3: error: too many arguments to function 'mkdir'
>> >> >    if (g_mkdir(dirname, S_IRUSR | S_IWUSR | S_IXUSR) < 0)
>> >> >    ^
>> >> > In file included from /usr/share/mingw-w64/include/fcntl.h:8:0,
>> >> >                  from internal.h:92,
>> >> >                  from buddyicon.c:23:
>> >> > /usr/share/mingw-w64/include/io.h:267:15: note: declared here
>> >> >    int __cdecl mkdir (const char *) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
>> >> >                ^
>> >> > buddyicon.c: In function 'read_icon_file':
>> >> > buddyicon.c:605:2: warning: passing argument 3 of 'g_file_get_contents' from incompatible pointer type [enabled by default]
>> >> >   if (!g_file_get_contents(path, (gchar **)data, len, &err))
>> >> >   ^
>> >> > In file included from /usr/include/glib-2.0/glib.h:48:0,
>> >> >                  from /usr/include/glib-2.0/gmodule.h:28,
>> >> >                  from internal.h:107,
>> >> >                  from buddyicon.c:23:
>> >> > /usr/include/glib-2.0/glib/gfileutils.h:85:10: note: expected 'gsize *' but argument is of type 'size_t *'
>> >> >  gboolean g_file_get_contents (const gchar  *filename,
>> >> >           ^
>> >> > make[4]: *** [buddyicon.lo] Error 1
>> >> > make[4]: Leaving directory `/home/rehs/pidgin-main/libpurple'
>> >> > make[3]: *** [all-recursive] Error 1
>> >> > make[3]: Leaving directory `/home/rehs/pidgin-main/libpurple'
>> >> > make[2]: *** [all] Error 2
>> >> > make[2]: Leaving directory `/home/rehs/pidgin-main/libpurple'
>> >> > make[1]: *** [all-recursive] Error 1
>> >> > make[1]: Leaving directory `/home/rehs/pidgin-main'
>> >> > make: *** [all] Error 2
>> >> >
>> >> > _______________________________________________
>> >> > Devel mailing list
>> >> > Devel at pidgin.im
>> >> > https://pidgin.im/cgi-bin/mailman/listinfo/devel
>> >>
>>



More information about the Devel mailing list