Alexander Afanasyev | b4b9229 | 2013-07-09 13:54:59 -0700 | [diff] [blame] | 1 | ChronoChat |
| 2 | ========== |
| 3 | |
| 4 | ChronoChat is a multiparty chat application that demostrates our synchronization primitive that we call ChronoSync. |
| 5 | |
| 6 | Note 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 | |
| 11 | 1. 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. |
| 12 | 2. 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 Afanasyev | eb7ee6b | 2013-07-13 16:20:09 -0700 | [diff] [blame] | 17 | ### Compilation steps for OSX |
Alexander Afanasyev | b4b9229 | 2013-07-09 13:54:59 -0700 | [diff] [blame] | 18 | |
Alexander Afanasyev | eb7ee6b | 2013-07-13 16:20:09 -0700 | [diff] [blame] | 19 | 1. 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 Afanasyev | b4b9229 | 2013-07-09 13:54:59 -0700 | [diff] [blame] | 20 | |
Alexander Afanasyev | eb7ee6b | 2013-07-13 16:20:09 -0700 | [diff] [blame] | 21 | rsync://macports.named-data.net/macports/ |
Alexander Afanasyev | b4b9229 | 2013-07-09 13:54:59 -0700 | [diff] [blame] | 22 | |
Alexander Afanasyev | eb7ee6b | 2013-07-13 16:20:09 -0700 | [diff] [blame] | 23 | 2. Update port definitions and install (+load) required packages |
Alexander Afanasyev | b4b9229 | 2013-07-09 13:54:59 -0700 | [diff] [blame] | 24 | |
Alexander Afanasyev | eb7ee6b | 2013-07-13 16:20:09 -0700 | [diff] [blame] | 25 | $ sudo port selfupdate |
Alexander Afanasyev | b4b9229 | 2013-07-09 13:54:59 -0700 | [diff] [blame] | 26 | |
Alexander Afanasyev | eb7ee6b | 2013-07-13 16:20:09 -0700 | [diff] [blame] | 27 | # Install and CCNx |
| 28 | sudo port install ccnx |
| 29 | sudo port load ccnx |
Alexander Afanasyev | b4b9229 | 2013-07-09 13:54:59 -0700 | [diff] [blame] | 30 | |
Alexander Afanasyev | eb7ee6b | 2013-07-13 16:20:09 -0700 | [diff] [blame] | 31 | # Install ChronoChat dependencies |
| 32 | sudo port install pkgconfig protobuf-cpp boost qt4-mac |
Alexander Afanasyev | b4b9229 | 2013-07-09 13:54:59 -0700 | [diff] [blame] | 33 | |
Alexander Afanasyev | eb7ee6b | 2013-07-13 16:20:09 -0700 | [diff] [blame] | 34 | 3. Fetch source code with submodules |
Alexander Afanasyev | b4b9229 | 2013-07-09 13:54:59 -0700 | [diff] [blame] | 35 | |
Alexander Afanasyev | df7e569 | 2013-07-15 12:43:12 -0700 | [diff] [blame^] | 36 | git clone --recursive git://github.com/named-data/ChronoChat |
Alexander Afanasyev | b4b9229 | 2013-07-09 13:54:59 -0700 | [diff] [blame] | 37 | |
Alexander Afanasyev | eb7ee6b | 2013-07-13 16:20:09 -0700 | [diff] [blame] | 38 | If you already cloned repository, you can update submodules this way: |
| 39 | |
Alexander Afanasyev | df7e569 | 2013-07-15 12:43:12 -0700 | [diff] [blame^] | 40 | git submodule update --init |
Alexander Afanasyev | eb7ee6b | 2013-07-13 16:20:09 -0700 | [diff] [blame] | 41 | |
Alexander Afanasyev | df7e569 | 2013-07-15 12:43:12 -0700 | [diff] [blame^] | 42 | 4. Configure and install ChronoSync |
Alexander Afanasyev | eb7ee6b | 2013-07-13 16:20:09 -0700 | [diff] [blame] | 43 | |
Alexander Afanasyev | df7e569 | 2013-07-15 12:43:12 -0700 | [diff] [blame^] | 44 | cd ChronoChat/ChronoSync |
| 45 | ./waf configure |
| 46 | ./waf |
| 47 | sudo ./waf install |
| 48 | |
| 49 | Note, you may need to add ``--ndnx=<DIR>`` or ``--openssl=<DIR>`` flags to ``./waf configure`` |
| 50 | if NDNx and/or openssl cannot be found. |
Alexander Afanasyev | eb7ee6b | 2013-07-13 16:20:09 -0700 | [diff] [blame] | 51 | |
| 52 | 5. 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 Afanasyev | b4b9229 | 2013-07-09 13:54:59 -0700 | [diff] [blame] | 57 | |
| 58 | Congratulations! build/ChronoChat.app is ready to use (on a Mac). |
| 59 | |
Alexander Afanasyev | eb7ee6b | 2013-07-13 16:20:09 -0700 | [diff] [blame] | 60 | ### Compilation steps for Ubuntu 12.04 |
| 61 | |
| 62 | 1. 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 | |
| 74 | 2. 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 | |
| 82 | 3. Fetch source code with submodules |
| 83 | |
Alexander Afanasyev | df7e569 | 2013-07-15 12:43:12 -0700 | [diff] [blame^] | 84 | git clone --recursive git://github.com/named-data/ChronoChat |
Alexander Afanasyev | eb7ee6b | 2013-07-13 16:20:09 -0700 | [diff] [blame] | 85 | |
| 86 | If you already cloned repository, you can update submodules this way: |
| 87 | |
Alexander Afanasyev | df7e569 | 2013-07-15 12:43:12 -0700 | [diff] [blame^] | 88 | git submodule update --init |
Alexander Afanasyev | eb7ee6b | 2013-07-13 16:20:09 -0700 | [diff] [blame] | 89 | |
Alexander Afanasyev | df7e569 | 2013-07-15 12:43:12 -0700 | [diff] [blame^] | 90 | 4. Configure and install ChronoSync |
Alexander Afanasyev | eb7ee6b | 2013-07-13 16:20:09 -0700 | [diff] [blame] | 91 | |
Alexander Afanasyev | df7e569 | 2013-07-15 12:43:12 -0700 | [diff] [blame^] | 92 | cd ChronoChat/ChronoSync |
| 93 | ./waf configure |
| 94 | ./waf |
| 95 | sudo ./waf install |
Alexander Afanasyev | eb7ee6b | 2013-07-13 16:20:09 -0700 | [diff] [blame] | 96 | sudo ldconfig |
| 97 | |
Alexander Afanasyev | df7e569 | 2013-07-15 12:43:12 -0700 | [diff] [blame^] | 98 | Note, you may need to add ``--ndnx=<DIR>`` or ``--openssl=<DIR>`` flags to ``./waf configure`` |
| 99 | if NDNx and/or openssl cannot be found. |
| 100 | |
Alexander Afanasyev | eb7ee6b | 2013-07-13 16:20:09 -0700 | [diff] [blame] | 101 | 5. Configure and build ChronoChat |
| 102 | |
| 103 | cd .. |
| 104 | ./waf configure |
| 105 | ./waf |
| 106 | |
| 107 | Congratulations! build/ChronoChat is ready to use. Do not forget to start ccnd and configure FIB before using ChronoChat. |
| 108 | |
| 109 | |