diff options
Diffstat (limited to 'README')
-rw-r--r-- | README | 181 |
1 files changed, 116 insertions, 65 deletions
@@ -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 |