summaryrefslogtreecommitdiffstats
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README181
1 files changed, 116 insertions, 65 deletions
diff --git a/README b/README
index 66d953075..c87893013 100644
--- a/README
+++ b/README
@@ -1,45 +1,123 @@
-Half-arsed divelog software in C.
+Subsurface - an Open Source Divelog
+===================================
-I'm tired of Java programs that don't work etc.
+In fall of 2011, when a forced lull in kernel development gave him an
+opportunity to start on a new endeavor, Linus Torvalds decided to tackle
+his frustration with the lack of decent divelog software on Linux.
+
+Subsurface is the result of the work of him and a team of developers
+since then.
License: GPLv2
-You need libxml2-devel, gtk2-devel, glib-2.0 and GConf2-devel to build
+Subsurface can be found at http://subsurface.hohndel.org
+
+You can get the latest sources from the git repository:
+
+git clone git://subsurface.hohndel.org/subsurface.git .
+
+or
+
+git clone http://subsurface.hohndel.org/subsurface.git .
+
+You can also browse the sources via gitweb.
+
+
+Building subsurface under Linux
+-------------------------------
+You need libxml2-devel, gtk2-devel, glib-2.0 and gconf2-devel to build
this (and libusb-1.0 if you have libdivecomputer built with it, but then
-you obviously already have it installed)
+you obviously already have it installed). Check with your Linux
+distribution how to install these packages.
+
+On Debian the package names are different; try libxml2-dev libgtk2.0-dev
+glib-2.0 libgconf2-dev, but it seems the cairo package at least in
+Squeeze is too old.
You also need to have libdivecomputer installed, which goes something like this:
- git clone git://libdivecomputer.git.sourceforge.net/gitroot/libdivecomputer/libdivecomputer
- cd libdivecomputer
- autoreconf --install
- ./configure
- make
- sudo make install
+git clone \
+git://libdivecomputer.git.sourceforge.net/gitroot/libdivecomputer/libdivecomputer
+cd libdivecomputer
+autoreconf --install
+./configure
+make
+sudo make install
-NOTE! You may need to tell the main Makefile where you installed
-libdivecomputer if you didn't do it in the default /usr/local location.
-I don't trust pkg-config for libdivecomputer, since pkg-config usually
-doesn't work unless the project has been installed by the distro.
+NOTE! Sometimes you may need to tell the main Subsurface Makefile where
+you installed libdivecomputer; pkg-config for libdivecomputer doesn't
+always work unless the project has been installed by the distro.
-Just edit the makefile directly. autoconf and friends are the devil's
-tools.
+Just edit the makefile directly.
-Usage:
- make
- ./subsurface dives/*.xml
+Building Subsurface under Windows
+---------------------------------
+Subsurface builds nicely with MinGW – the official builds are done as
+cross builds under Linux (currently on Fedora 17). A shell script to do
+that (plus the .nsi file to create the installer with makensis) are
+included in the packaging/Windows directory.
+
+The best way to get libdivecomputer to build appears to be
+
+mingw32-configure
+mingw32-make
+sudo mingw32-make install
+
+Jef Driesen, the developer behind libdivecomputer, provided his build
+instructions on Windows (which are different from what I use):
+
+./configure --host=i586-mingw32msvc --prefix=$HOME/local
+PKG_CONFIG_LIBDIR='/opt/i586-mingw32msvc/lib/pkgconfig'
+make
+make install
+
+These use different paths than what I get on Fedora. To do this the way
+Jef does I would need
+
+PKG_CONFIG_LIBDIR='/usr/i686-w64-mingw32/sys-root/mingw/lib/pkgconfig'
-to see my dives (with no notes or commentary).
+Either way, once you have built libdivecomputer you can use sh
+packaging/Windows/mingw-make.sh to then build subsurface.
-Or, if you have a dive computer supported by libdivecomputer, you can
-just do
+Building subsurface on a Mac
- make
- ./subsurface
+Provided by Henrik Brautaset Aronsen
+Install MacPorts and install the dependencies from MacPorts:
+sudo port install gtk2 +no_x11 +quartz -x11 libusb gtk-osx-application \
+ automake autoconf libtool
-and select "Import" from the Log menu, tell it what dive computer you
-have (and where it is connected if you need to), and hit "OK".
+Install libdivecomputer:
+git clone git://libdivecomputer.git.sourceforge.net/gitroot/libdivecomputer/libdivecomputer
+cd libdivecomputer
+autoreconf --install
+LIBUSB_CFLAGS=-I/opt/local/include ./configure
+make
+sudo make install
+
+Install subsurface:
+git clone git://subsurface.hohndel.org/subsurface.git
+cd subsurface
+PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/" make
+sudo make install-macosx
+
+
+Usage:
+------
+
+Install and start from the desktop (or you can run it locally from the
+build directory).
+
+./subsurface
+
+You can give a data file as command line argument, or Subsurface picks a
+default file for you when started from the desktop or with out an
+argument.
+
+If you have a dive computer supported by libdivecomputer, you can just
+select "Download from Divecomputer" from the Log menu, tell it what dive
+computer you have (and where it is connected if you need to), and hit
+"OK".
NOTE! There are often multiple models of dive computers that import
exactly the same way. If you have a Suunto Gekko, for example, the
@@ -114,47 +192,20 @@ Atomic Aquatics:
* Cobalt
-Implementation details:
-
- main.c - program frame
- dive.c - creates and maintaines the internal dive list structure
- libdivecomputer.c
- uemis.c
- parse-xml.c
- save-xml.c - interface with dive computers and the XML files
- profile.c - creates the data for the profile and draws it using cairo
-
-A first UI has been implemented in gtk and an attempt has been made to
-separate program logic from UI implementation.
-
- gtk-gui.c - overall layout, main window of the UI
- divelist.c - list of dives subsurface maintains
- equipment.c - equipment / tank information for each dive
- info.c - detailed dive info
- print.c - printing
-
-WARNING! I wasn't kidding when I said that I've done this by reading
-gtk2 tutorials as I've gone along. If somebody is more comfortable with
-gtk, feel free to send me (signed-off) patches.
-
-Just as an example of the extreme hackiness of the code, I don't even
-bother connecting a signal for the "somebody edited the dive info"
-cases. I just save/restore the dive info every single time you switch
-dives. Christ! That's truly lame.
-
-NOTE! Some of the dives are pretty pitiful. All the last dives are from
-my divemaster course, so they are from following open water students
-along (many of them the confined*water dives). There a lot of the
-action is at the surface, so some of the "dives" are 4ft deep and 2min
-long.
Contributing:
-
-Please either send me signed-off patches or a pull request with
-signed-off commits. If you don't sign off on them, I will not accept
-them. This means adding a line that says "Signed-off-by: Name <email>"
-at the end of each commit, indicating that you wrote the code and have
-the right to pass it on as an open source patch.
+-------------
+
+There is a mailing list for developers: subsurface@hohndel.org
+Go to http://lists.hohndel.org/cgi-bin/mailman/listinfo/subsurface
+to subscribe.
+
+If you want to contribute code, please either send signed-off patches or
+a pull request with signed-off commits. If you don't sign off on them,
+we will not accept them. This means adding a line that says
+"Signed-off-by: Name <email>" at the end of each commit, indicating that
+you wrote the code and have the right to pass it on as an open source
+patch.
See: http://gerrit.googlecode.com/svn/documentation/2.0/user-signedoffby.html