-
Notifications
You must be signed in to change notification settings - Fork 0
/
HACKING
83 lines (63 loc) · 3.03 KB
/
HACKING
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
CONTRIBUTING
------------
Contributors to rcd and related modules (libredcarpet and rc) are more
than welcome. rcd is written in C and heavily uses the glib library.
Discussion takes place on the rc-devel@lists.ximian.com mailing list.
Patches should be sent there, and should follow the existing stylistic
conventions, be accompanied by a ChangeLog entry, and sent in GNU
unified diff format (diff -u).
Please DO NOT commit to CVS without approval from one of the
maintainers.
BUILDING
--------
Building rcd is hard. Like, a total pain in the ass. Hopefully we
will soon have development packages up so you don't have to go
through the hell of building this stuff yourself.
* glib 2
First, you will need glib2. It comes with Red Hat 7.3 and up, and
probably every distro after. If you don't have it, you can get it
from http://www.gtk.org.
* Libsoup
You will need to build libsoup, and HTTP transfer library. Checkout
the "libsoup" module from GNOME CVS. Make sure to get it from the
"libsoup-2-0-branch" branch, as HEAD won't work right now.
* xmlrpc-c
Get the xmlrpc-c 0.9.10 tarball from
http://primates.ximian.com/~joe/xmlrpc-c and untar it.
You'll need to apply a couple of patches to it; these patches have
been sent upstream and will likely go into a 0.9.11 release if it
ever happens. The first (libxml2.patch) adds libxml2 backend support
so we don't have to link against expat (we link against libxml2 already
anyway). The second (preinvoke.patch) adds preinvoke support, so we
can do access control on methods. The third, and final
(public-dispatch.patch), is useful if you want to make calls in
your registry without incurring the penalty inherent in XML serialization
and deserialization. Apply all of them
("patch -p1 < [patch]" from the toplevel xmlrpc-c source dir). Then
engage in highly entertaining build fun:
libtoolize --force --copy
aclocal
autoheader
automake --gnu --add-missing --copy
autoconf
./configure --prefix=/opt/rcd --enable-libxml2-backend \
--disable-abyss-server --disable-cgi-server \
--disable-cplusplus --disable-libwww-client
* libredcarpet
libredcarpet is the packaging system independent backend and library
containing a lot of useful functions used in Red Carpet and rcd. It's
in GNOME CVS, module libredcarpet, and probably in tarball form from
wherever you got the rcd tarball.
You'll need to pass in some configure flags to enable backends for your
distro. If you are on an RPM system, you'll want to pass in:
--enable-backend-rpm --enable-rpm-version=[version]
If on Debian:
--enable-backend-dpkg
And now you're ready to build rcd.
If you build xmlrpc-c into a prefix, you'll probably want to pass in
the --with-xmlrpc-prefix=[prefix] option to configure/autogen.sh. You
will probably also need to set the PKG_CONFIG_PATH environment variable
to the paths containing the libsoup and libredcarpet pkgconfig files
([prefix]/lib/pkgconfig).
Once all of that is taken care of, you should be off and running.
Good Luck.