- 论坛徽章:
- 0
|
关于用ports安装Pidgin-2.3.0,以下是俺的安装步骤:
1. fetch & extract
========
http://downloads.sourceforge.net/pidgin/pidgin-2.3.0.tar.bz2
$ pwd
/usr/home/porter/src
$ tar jxf /usr/ports/distfiles/pidgin-2.3.0.tar.bz2
$ mkdir work
$ cd work
$ lf ..
./ ../ pidgin-2.3.0/ work/
2. configure
========
$ ../pidgin-2.3.0/configure
failed:
========
The msgfmt command is required to build libpurple. If it is installed
on your system, ensure that it is in your path. If it is not, install
GNU gettext to continue.
If you have msgfmt installed, but for some reason this error message
is still displayed, you have encountered what appears to be a bug in
third-party configure macros. Try setting the MSGFMT environment
variable to the absolute path to your msgfmt binary and trying
configure again, like this:
MSGFMT=/path/to/msgfmt ./configure ...
========
according to the suggestion, configure again
$ MSGFMT=/path/to/msgfmt ../pidgin-2.3.0/configure
========
configure successfully!
3. compile and link
========
failed:
========
In file included from ../../../../pidgin-2.3.0/libpurple/protocols/bonjour/jabber.c:23:
/usr/include/net/if.h:265: error: field `ifru_addr' has incomplete type
/usr/include/net/if.h:266: error: field `ifru_dstaddr' has incomplete type
/usr/include/net/if.h:267: error: field `ifru_broadaddr' has incomplete type
/usr/include/net/if.h:299: error: field `ifra_addr' has incomplete type
/usr/include/net/if.h:300: error: field `ifra_broadaddr' has incomplete type
/usr/include/net/if.h:301: error: field `ifra_mask' has incomplete type
/usr/include/net/if.h:368: error: field `addr' has incomplete type
/usr/include/net/if.h:369: error: field `dstaddr' has incomplete type
gmake[5]: *** [jabber.lo] Error 1
gmake[5]: Leaving directory `/usr/home/porter/src/work/libpurple/protocols/bonjour'
gmake[4]: *** [all-recursive] Error 1
gmake[4]: Leaving directory `/usr/home/porter/src/work/libpurple/protocols'
gmake[3]: *** [all-recursive] Error 1
gmake[3]: Leaving directory `/usr/home/porter/src/work/libpurple'
gmake[2]: *** [all] Error 2
gmake[2]: Leaving directory `/usr/home/porter/src/work/libpurple'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/usr/home/porter/src/work'
gmake: *** [all] Error 2
========
4. jabber.c
========
The reason is that jabber.c does not include <sys/types.h> and <sys/socket.h>
before <net/if.h>. Before we modify the file we'd better backup in order to
create patch later:
$ cp -p ../pidgin-2.3.0/libpurple/protocols/bonjour/jabber.c ../pidgin-2.3.0/libpurple/protocols/bonjour/jabber.c.orig
And modify jabber.c from:
========
22 #ifndef _WIN32
23 #include <net/if.h>
24 #include <sys/ioctl.h>
25 #include <sys/socket.h>
26 #include <netinet/in.h>
27 #include <arpa/inet.h>
28 #else
29 #include "libc_interface.h"
30 #endif
31 #include <sys/types.h>
32 #include <glib.h>
33 #include <unistd.h>
34 #include <fcntl.h>
========
to:
========
22 #ifndef _WIN32
23 #include <sys/types.h>
24 #include <sys/socket.h>
25 #include <net/if.h>
26 #include <sys/ioctl.h>
27 #include <sys/socket.h>
28 #include <netinet/in.h>
29 #include <arpa/inet.h>
30 #else
31 #include "libc_interface.h"
32 #endif
33 #include <sys/types.h>
34 #include <glib.h>
35 #include <unistd.h>
36 #include <fcntl.h>
========
5. GMSFGFMT
========
Continue gmake, failed with the following message:
========
Making all in po
gmake[2]: Entering directory `/usr/home/porter/src/work/po'
file=`echo af | sed 's,.*/,,'`.gmo \
&& rm -f $file && -o $file ../../pidgin-2.3.0/po/af.po
-o: not found
gmake[2]: *** [af.gmo] Error 127
gmake[2]: Leaving directory `/usr/home/porter/src/work/po'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/usr/home/porter/src/work'
gmake: *** [all] Error 2
========
The reason is the following suffixes rules in Makefile in
`/usr/home/porter/src/work/po' directory.
========
.po.gmo:
file=`echo $* | sed 's,.*/,,'`.gmo \
&& rm -f $$file && $(GMSGFMT) -o $$file $<
========
Browse back to top of the Makefile, we'll see:
========
GMSGFMT =
MSGFMT = /path/to/msgfmt
========
We should set GMSGFMT=/path/to/msgfmt to fix this bug. We also notice
that the following error message:
========
checking for doxygen... false
configure: WARNING: *** Doxygen not found, docs will not be available
========
We decide to configure like this:
========
$ MSGFMT=/usr/local/bin/msgfmt GMSGFMT=/usr/local/bin/msgfmt ../pidgin-2.3.0/configure --disable-doxygen
========
Now gmake will build pidgin-2.3.0 successfully.
6. Upgrade ports from pidgin-2.2.2 to pidgin-2.3.0
6.1 Modify Makefiles
Modifiy /usr/ports/net-im/pidgin/Makefile from:
========
15 LIB_DEPENDS= startup-notification-1.0:${PORTSDIR}/x11/startup-notification \
16 purple.2:${PORTSDIR}/net-im/libpurple
========
to:
========
15 LIB_DEPENDS= startup-notification-1.0:${PORTSDIR}/x11/startup-notification \
16 purple.3:${PORTSDIR}/net-im/libpurple
========
Modifiy /usr/ports/net-im/libpurple/Makefile from:
========
9 PORTNAME?= libpurple
10 PORTVERSION= 2.2.2
========
========
9 PORTNAME?= libpurple
10 PORTVERSION= 2.3.0
========
6.2 Creating the new checksum file and extract source code
$ cd /usr/ports/net-im/pidgin/
$ make makesum
$ make extract
6.3 Create patches
$ cd /usr/ports/net-im/pidgin/work/pidgin-2.3.0
$ diff -u -p libpurple/protocols/bonjour/jabber.c.orig libpurple/protocols/bonjour/jabber.c > ../../../libpurple/files/patch-libpurple_protocols_bonjour_jabber.c
Tow patches from pidgin-2.2.2 does while upgrading to pidgin-2.3.0
patch-finch_libgnt_gntmain.c
patch-libpurple_plugins_ssl_ssl-nss.c
We also need to re-create these tow patches.
6.4 Build and install pidgin-2.3.0 by ports.
$ cd /usr/ports/net-im/pidgin/
$ make install clean
Rember to uninstall pidgin-2.2.2 and libpurple-2.2.2 before you do build
and install pidgin-2.3.0. |
|