2012-10-20 04:22:59 +00:00
|
|
|
|
Subsurface - an Open Source Divelog
|
|
|
|
|
===================================
|
2011-09-01 17:09:53 +00:00
|
|
|
|
|
2012-10-20 04:22:59 +00:00
|
|
|
|
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.
|
2011-09-01 17:09:53 +00:00
|
|
|
|
|
|
|
|
|
License: GPLv2
|
2011-09-03 15:53:05 +00:00
|
|
|
|
|
2012-10-20 04:22:59 +00:00
|
|
|
|
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
|
2011-09-22 22:20:26 +00:00
|
|
|
|
this (and libusb-1.0 if you have libdivecomputer built with it, but then
|
2012-10-20 04:22:59 +00:00
|
|
|
|
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.
|
2011-09-03 15:53:05 +00:00
|
|
|
|
|
2011-09-12 21:05:44 +00:00
|
|
|
|
You also need to have libdivecomputer installed, which goes something like this:
|
|
|
|
|
|
2012-10-20 04:22:59 +00:00
|
|
|
|
git clone \
|
|
|
|
|
git://libdivecomputer.git.sourceforge.net/gitroot/libdivecomputer/libdivecomputer
|
|
|
|
|
cd libdivecomputer
|
|
|
|
|
autoreconf --install
|
|
|
|
|
./configure
|
|
|
|
|
make
|
|
|
|
|
sudo make install
|
2011-09-12 21:05:44 +00:00
|
|
|
|
|
2012-10-20 04:22:59 +00:00
|
|
|
|
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.
|
2011-09-22 22:20:26 +00:00
|
|
|
|
|
2012-10-20 04:22:59 +00:00
|
|
|
|
Just edit the makefile directly.
|
2011-09-22 22:20:26 +00:00
|
|
|
|
|
2011-09-03 15:53:05 +00:00
|
|
|
|
|
2012-10-20 04:22:59 +00:00
|
|
|
|
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'
|
2011-09-03 15:53:05 +00:00
|
|
|
|
|
2012-10-20 04:22:59 +00:00
|
|
|
|
Either way, once you have built libdivecomputer you can use sh
|
|
|
|
|
packaging/Windows/mingw-make.sh to then build subsurface.
|
2011-09-03 15:53:05 +00:00
|
|
|
|
|
2012-10-20 04:22:59 +00:00
|
|
|
|
Building subsurface on a Mac
|
2011-09-12 21:05:44 +00:00
|
|
|
|
|
2012-10-20 04:22:59 +00:00
|
|
|
|
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
|
2011-09-12 21:05:44 +00:00
|
|
|
|
|
2012-10-20 04:22:59 +00:00
|
|
|
|
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".
|
2011-09-12 21:05:44 +00:00
|
|
|
|
|
2011-09-27 21:09:21 +00:00
|
|
|
|
NOTE! There are often multiple models of dive computers that import
|
|
|
|
|
exactly the same way. If you have a Suunto Gekko, for example, the
|
|
|
|
|
import function works fine - even if you don't find the Gekko listed
|
|
|
|
|
explicitly. It has the same import engine as the older Suunto Vyper
|
|
|
|
|
(not "Vyper Air").
|
|
|
|
|
|
|
|
|
|
So check the (incomplete?) list of supported dive computers below, and
|
|
|
|
|
see which ones show up together. If you have the "Aeris Elite T3", for
|
|
|
|
|
example, you'd notice that it's in the same group with the "Oceanic Atom
|
|
|
|
|
2", and use that choice to import.
|
|
|
|
|
|
|
|
|
|
Suunto:
|
|
|
|
|
|
|
|
|
|
* Solution
|
|
|
|
|
|
|
|
|
|
* Eon, Solution Alpha and Solution Nitrox/Vario
|
|
|
|
|
|
|
|
|
|
* Vyper, Cobra, Vytec, Vytec DS, D3, Spyder, Gekko, Mosquito, Stinger and Zoop
|
|
|
|
|
|
|
|
|
|
* Vyper2, Cobra2, Cobra3, Vyper Air and HelO2
|
|
|
|
|
|
|
|
|
|
* D9, D6 and D4
|
|
|
|
|
|
|
|
|
|
Uwatec:
|
|
|
|
|
|
|
|
|
|
* Aladin
|
|
|
|
|
|
|
|
|
|
* Memomouse
|
|
|
|
|
|
|
|
|
|
* Smart and Galileo (infrared)
|
|
|
|
|
|
|
|
|
|
Reefnet:
|
|
|
|
|
|
|
|
|
|
* Sensus
|
|
|
|
|
|
|
|
|
|
* Sensus Pro
|
|
|
|
|
|
|
|
|
|
* Sensus Ultra
|
|
|
|
|
|
|
|
|
|
Oceanic, Aeris, Sherwood, Hollis, Genesis and Tusa (Pelagic):
|
|
|
|
|
|
|
|
|
|
* VT Pro, Versa Pro, Pro Plus 2, Wisdom, Atmos 2, Atmos AI, Atmos
|
|
|
|
|
Elite, ...
|
|
|
|
|
|
|
|
|
|
* Veo 250, Veo 180Nx, XR2, React Pro, DG02, Insight, ...
|
|
|
|
|
|
|
|
|
|
* Atom 2.0, VT3, Datamask, Geo, Geo 2.0, Veo 2.0, Veo 3.0, Pro Plus 2.1,
|
|
|
|
|
Compumask, Elite T3, Epic, Manta, IQ-900 (Zen), IQ-950 (Zen Air),
|
|
|
|
|
IQ-750 (Element II), ...
|
|
|
|
|
|
|
|
|
|
Mares:
|
|
|
|
|
|
|
|
|
|
* Nemo, Nemo Excel, Nemo Apneist, ...
|
|
|
|
|
|
|
|
|
|
* Puck, Puck Air, Nemo Air, Nemo Wide, ...
|
|
|
|
|
|
|
|
|
|
* Icon HD
|
|
|
|
|
|
|
|
|
|
Heinrichs Weikamp:
|
|
|
|
|
|
|
|
|
|
* OSTC, OSTC Mk.2 and OSTC 2N
|
|
|
|
|
|
|
|
|
|
Cressi, Zeagle and Mares (Seiko):
|
|
|
|
|
|
|
|
|
|
* Edy, Nemo Sport
|
|
|
|
|
|
|
|
|
|
* N2iTiON3
|
|
|
|
|
|
|
|
|
|
Atomic Aquatics:
|
|
|
|
|
|
|
|
|
|
* Cobalt
|
|
|
|
|
|
2011-09-03 15:53:05 +00:00
|
|
|
|
|
2011-09-06 19:32:51 +00:00
|
|
|
|
|
|
|
|
|
Contributing:
|
2012-10-20 04:22:59 +00:00
|
|
|
|
-------------
|
|
|
|
|
|
|
|
|
|
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.
|
2011-09-06 19:32:51 +00:00
|
|
|
|
|
|
|
|
|
See: http://gerrit.googlecode.com/svn/documentation/2.0/user-signedoffby.html
|
|
|
|
|
|
2011-09-06 21:58:05 +00:00
|
|
|
|
Also, please write good git commit messages. A good commit message
|
|
|
|
|
looks like this:
|
|
|
|
|
|
2011-11-27 16:53:14 +00:00
|
|
|
|
Header line: explaining the commit in one line
|
2011-09-06 21:58:05 +00:00
|
|
|
|
|
|
|
|
|
Body of commit message is a few lines of text, explaining things
|
|
|
|
|
in more detail, possibly giving some background about the issue
|
|
|
|
|
being fixed, etc etc.
|
|
|
|
|
|
2011-11-27 16:53:14 +00:00
|
|
|
|
The body of the commit message can be several paragraphs, and
|
2011-09-06 21:58:05 +00:00
|
|
|
|
please do proper word-wrap and keep columns shorter than about
|
|
|
|
|
74 characters or so. That way "git log" will show things
|
|
|
|
|
nicely even when it's indented.
|
|
|
|
|
|
|
|
|
|
Reported-by: whoever-reported-it
|
|
|
|
|
Signed-off-by: Your Name <youremail@yourhost.com>
|
|
|
|
|
|
|
|
|
|
where that header line really should be meaningful, and really should be
|
|
|
|
|
just one line. That header line is what is shown by tools like gitk and
|
|
|
|
|
shortlog, and should summarize the change in one readable line of text,
|
|
|
|
|
independently of the longer explanation.
|