blob: 8d2898454661996168c2d78d1185f5fe584b8d25 [file] [log] [blame] [view]
Alexander Afanasyevb4b92292013-07-09 13:54:59 -07001ChronoChat
2==========
3
4ChronoChat is a multiparty chat application that demostrates our synchronization primitive that we call ChronoSync.
5
6Note that after you click to close ChronoChat, it will keep running on your system tray. To restore it to normal size window, you have to click on the system tray icon (normally on the upper right corner of your screen). Clicking on the dock won't work for now and is still on the to-do list (because I'm using qt for gui, not the native Cocoa framework).
7
8## Known Issues
9---------------
10
111. When you switch to a new room, you'll temporarily see yourself in two nodes for a minute or so. It won't affect others, just yourself. Hopefully it's not so disturbing.
122. Sometimes you may not get the most up-to-date chat history.
13
14## For those who wants (or is forced to) compile from source code
15-----------------------------------------------------------------
16
Alexander Afanasyeveb7ee6b2013-07-13 16:20:09 -070017### Compilation steps for OSX
Alexander Afanasyevb4b92292013-07-09 13:54:59 -070018
Alexander Afanasyeveb7ee6b2013-07-13 16:20:09 -0700191. Install MacPorts, if not yet installed (http://www.macports.org/) and configure NDN ports repository (https://github.com/named-data/ccnx/wiki/Using-ccnx-with-macports). If your Macports are installed in `/opt/local`, add the following line at the end of `/opt/local/etc/macports/sources.conf` before the default port repository:
Alexander Afanasyevb4b92292013-07-09 13:54:59 -070020
Alexander Afanasyeveb7ee6b2013-07-13 16:20:09 -070021 rsync://macports.named-data.net/macports/
Alexander Afanasyevb4b92292013-07-09 13:54:59 -070022
Alexander Afanasyeveb7ee6b2013-07-13 16:20:09 -0700232. Update port definitions and install (+load) required packages
Alexander Afanasyevb4b92292013-07-09 13:54:59 -070024
Alexander Afanasyeveb7ee6b2013-07-13 16:20:09 -070025 $ sudo port selfupdate
Alexander Afanasyevb4b92292013-07-09 13:54:59 -070026
Alexander Afanasyeveb7ee6b2013-07-13 16:20:09 -070027 # Install and CCNx
28 sudo port install ccnx
29 sudo port load ccnx
Alexander Afanasyevb4b92292013-07-09 13:54:59 -070030
Alexander Afanasyeveb7ee6b2013-07-13 16:20:09 -070031 # Install ChronoChat dependencies
32 sudo port install pkgconfig protobuf-cpp boost qt4-mac
Alexander Afanasyevb4b92292013-07-09 13:54:59 -070033
Alexander Afanasyeveb7ee6b2013-07-13 16:20:09 -0700343. Fetch source code with submodules
Alexander Afanasyevb4b92292013-07-09 13:54:59 -070035
Alexander Afanasyevdf7e5692013-07-15 12:43:12 -070036 git clone --recursive git://github.com/named-data/ChronoChat
Alexander Afanasyevb4b92292013-07-09 13:54:59 -070037
Alexander Afanasyeveb7ee6b2013-07-13 16:20:09 -070038If you already cloned repository, you can update submodules this way:
39
Alexander Afanasyevdf7e5692013-07-15 12:43:12 -070040 git submodule update --init
Alexander Afanasyeveb7ee6b2013-07-13 16:20:09 -070041
Alexander Afanasyevdf7e5692013-07-15 12:43:12 -0700424. Configure and install ChronoSync
Alexander Afanasyeveb7ee6b2013-07-13 16:20:09 -070043
Alexander Afanasyevdf7e5692013-07-15 12:43:12 -070044 cd ChronoChat/ChronoSync
45 ./waf configure
46 ./waf
47 sudo ./waf install
48
49Note, you may need to add ``--ndnx=<DIR>`` or ``--openssl=<DIR>`` flags to ``./waf configure``
50if NDNx and/or openssl cannot be found.
Alexander Afanasyeveb7ee6b2013-07-13 16:20:09 -070051
525. Configure and build ChronoChat
53
54 cd ..
55 PKG_CONFIG_PATH=/opt/local/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig ./waf configure
56 ./waf
Alexander Afanasyevb4b92292013-07-09 13:54:59 -070057
58Congratulations! build/ChronoChat.app is ready to use (on a Mac).
59
Alexander Afanasyeveb7ee6b2013-07-13 16:20:09 -070060### Compilation steps for Ubuntu 12.04
61
621. Install dependencies
63
64 # General dependencies (build tools and dependencies for CCNx)
65 sudo apt-get install git libpcap-dev libxml2-dev make libssl-dev libexpat-dev g++ pkg-config
66
67 # ChronoSync/ChronoChat dependencies
68 sudo apt-get install libprotobuf-dev protobuf-compiler libevent-dev
69 sudo apt-get install libboost1.48-all-dev
70 sudo apt-get install qt4-dev-tools
71
72**NOTE** Only 1.48 version of boost libraries should be installed from packages. Since Ubuntu 12.04 ships with two versions, please make sure that 1.46 is not present, otherwise result is not guaranteed.
73
742. Download and install NDN fork of CCNx software
75
76 git clone git://github.com/named-data/ccnx
77 cd ccnx
78 ./configure
79 make
80 sudo make install
81
823. Fetch source code with submodules
83
Alexander Afanasyevdf7e5692013-07-15 12:43:12 -070084 git clone --recursive git://github.com/named-data/ChronoChat
Alexander Afanasyeveb7ee6b2013-07-13 16:20:09 -070085
86If you already cloned repository, you can update submodules this way:
87
Alexander Afanasyevdf7e5692013-07-15 12:43:12 -070088 git submodule update --init
Alexander Afanasyeveb7ee6b2013-07-13 16:20:09 -070089
Alexander Afanasyevdf7e5692013-07-15 12:43:12 -0700904. Configure and install ChronoSync
Alexander Afanasyeveb7ee6b2013-07-13 16:20:09 -070091
Alexander Afanasyevdf7e5692013-07-15 12:43:12 -070092 cd ChronoChat/ChronoSync
93 ./waf configure
94 ./waf
95 sudo ./waf install
Alexander Afanasyeveb7ee6b2013-07-13 16:20:09 -070096 sudo ldconfig
97
Alexander Afanasyevdf7e5692013-07-15 12:43:12 -070098Note, you may need to add ``--ndnx=<DIR>`` or ``--openssl=<DIR>`` flags to ``./waf configure``
99if NDNx and/or openssl cannot be found.
100
Alexander Afanasyeveb7ee6b2013-07-13 16:20:09 -07001015. Configure and build ChronoChat
102
103 cd ..
104 ./waf configure
105 ./waf
106
107Congratulations! build/ChronoChat is ready to use. Do not forget to start ccnd and configure FIB before using ChronoChat.
108
109