mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Updated the README file for 2.1
This clearly hadn't been edited in more than a year and was way outdated. I tried to make it useful and informative :-) Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
55f08bfeab
commit
1b3caa7c70
1 changed files with 115 additions and 64 deletions
179
README
179
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
|
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
|
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:
|
You also need to have libdivecomputer installed, which goes something like this:
|
||||||
|
|
||||||
git clone git://libdivecomputer.git.sourceforge.net/gitroot/libdivecomputer/libdivecomputer
|
git clone \
|
||||||
cd libdivecomputer
|
git://libdivecomputer.git.sourceforge.net/gitroot/libdivecomputer/libdivecomputer
|
||||||
autoreconf --install
|
cd libdivecomputer
|
||||||
./configure
|
autoreconf --install
|
||||||
make
|
./configure
|
||||||
sudo make install
|
make
|
||||||
|
sudo make install
|
||||||
|
|
||||||
NOTE! You may need to tell the main Makefile where you installed
|
NOTE! Sometimes you may need to tell the main Subsurface Makefile where
|
||||||
libdivecomputer if you didn't do it in the default /usr/local location.
|
you installed libdivecomputer; pkg-config for libdivecomputer doesn't
|
||||||
I don't trust pkg-config for libdivecomputer, since pkg-config usually
|
always work unless the project has been installed by the distro.
|
||||||
doesn't work unless the project has been installed by the distro.
|
|
||||||
|
Just edit the makefile directly.
|
||||||
|
|
||||||
|
|
||||||
|
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'
|
||||||
|
|
||||||
|
Either way, once you have built libdivecomputer you can use sh
|
||||||
|
packaging/Windows/mingw-make.sh to then build subsurface.
|
||||||
|
|
||||||
|
Building subsurface on a Mac
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
Just edit the makefile directly. autoconf and friends are the devil's
|
|
||||||
tools.
|
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
|
------
|
||||||
|
|
||||||
make
|
Install and start from the desktop (or you can run it locally from the
|
||||||
./subsurface dives/*.xml
|
build directory).
|
||||||
|
|
||||||
to see my dives (with no notes or commentary).
|
./subsurface
|
||||||
|
|
||||||
Or, if you have a dive computer supported by libdivecomputer, you can
|
You can give a data file as command line argument, or Subsurface picks a
|
||||||
just do
|
default file for you when started from the desktop or with out an
|
||||||
|
argument.
|
||||||
|
|
||||||
make
|
If you have a dive computer supported by libdivecomputer, you can just
|
||||||
./subsurface
|
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
|
||||||
and select "Import" from the Log menu, tell it what dive computer you
|
"OK".
|
||||||
have (and where it is connected if you need to), and hit "OK".
|
|
||||||
|
|
||||||
NOTE! There are often multiple models of dive computers that import
|
NOTE! There are often multiple models of dive computers that import
|
||||||
exactly the same way. If you have a Suunto Gekko, for example, the
|
exactly the same way. If you have a Suunto Gekko, for example, the
|
||||||
|
@ -114,47 +192,20 @@ Atomic Aquatics:
|
||||||
* Cobalt
|
* 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:
|
Contributing:
|
||||||
|
-------------
|
||||||
|
|
||||||
Please either send me signed-off patches or a pull request with
|
There is a mailing list for developers: subsurface@hohndel.org
|
||||||
signed-off commits. If you don't sign off on them, I will not accept
|
Go to http://lists.hohndel.org/cgi-bin/mailman/listinfo/subsurface
|
||||||
them. This means adding a line that says "Signed-off-by: Name <email>"
|
to subscribe.
|
||||||
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.
|
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
|
See: http://gerrit.googlecode.com/svn/documentation/2.0/user-signedoffby.html
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue