diff --git a/pkgs/applications/misc/viking/default.nix b/pkgs/applications/misc/viking/default.nix index eabd4a020f6..a98ed2aa5ff 100644 --- a/pkgs/applications/misc/viking/default.nix +++ b/pkgs/applications/misc/viking/default.nix @@ -1,5 +1,5 @@ { fetchurl, stdenv, pkgconfig, intltool, gettext, gtk, expat, curl -, bc, file }: +, gpsd, bc, file }: stdenv.mkDerivation rec { name = "viking-0.9.8"; @@ -9,12 +9,11 @@ stdenv.mkDerivation rec { sha256 = "1is8g6ld5pd13iiv9qm8526q1cblg01pqyakg52sd6k7fys7dz2d"; }; - patches = [ ./test-bc.patch ]; + patches = [ + ./test-bc.patch ./gpsdclient.patch ./implicit-declaration.patch + ]; - buildInputs = [ pkgconfig intltool gettext gtk expat curl bc file ]; - - # XXX: Remove this once we have `gpsd' (http://gpsd.berlios.de/). - configureFlags = "--disable-realtime-gps-tracking"; + buildInputs = [ pkgconfig intltool gettext gtk expat curl gpsd bc file ]; doCheck = true; diff --git a/pkgs/applications/misc/viking/gpsdclient.patch b/pkgs/applications/misc/viking/gpsdclient.patch new file mode 100644 index 00000000000..41722632260 --- /dev/null +++ b/pkgs/applications/misc/viking/gpsdclient.patch @@ -0,0 +1,51 @@ +Debian patch that allows compilation with libgps (from `gpsd'). +Failing to apply this patch, we get the following error: + + vikgpslayer.c:237: error: field 'realtime_gpsd_unit' has incomplete type + vikgpslayer.c: In function 'vik_gps_layer_new': + vikgpslayer.c:473: warning: implicit declaration of function 'gpsd_units' + vikgpslayer.c: In function 'rt_gpsd_try_connect': + vikgpslayer.c:1321: warning: passing argument 2 of 'gps_set_raw_hook' from incompatible pointer type + +diff -urNad trunk~/src/gpsdclient.h trunk/src/gpsdclient.h +--- trunk~/src/gpsdclient.h 1970-01-01 01:00:00.000000000 +0100 ++++ trunk/src/gpsdclient.h 2009-04-15 14:30:22.000000000 +0200 +@@ -0,0 +1,25 @@ ++/* $Id: gpsdclient.h 5330 2009-03-03 04:05:42Z ckuethe $ */ ++/* gpsdclient.h -- common functions for GPSD clients */ ++ ++#ifndef _GPSD_GPSDCLIENT_H_ ++#define _GPSD_GPSDCLIENT_H_ ++struct fixsource_t ++/* describe a data source */ ++{ ++ char *spec; /* pointer to actual storage */ ++ char *server; ++ char *port; ++ char *device; ++}; ++ ++enum unit {unspecified, imperial, nautical, metric}; ++enum unit gpsd_units(void); ++enum deg_str_type { deg_dd, deg_ddmm, deg_ddmmss }; ++ ++extern /*@observer@*/ char *deg_to_str( enum deg_str_type type, double f); ++ ++extern void gpsd_source_spec(/*@null@*/const char *fromstring, ++ /*@out@*/struct fixsource_t *source); ++ ++#endif /* _GPSDCLIENT_H_ */ ++/* gpsdclient.h ends here */ +diff -urNad trunk~/src/vikgpslayer.c trunk/src/vikgpslayer.c +--- trunk~/src/vikgpslayer.c 2009-02-08 14:47:01.000000000 +0100 ++++ trunk/src/vikgpslayer.c 2009-04-15 14:30:55.000000000 +0200 +@@ -39,6 +39,9 @@ + #include + #ifdef VIK_CONFIG_REALTIME_GPS_TRACKING + #include ++#ifndef gpsd_units ++#include "gpsdclient.h" ++#endif + #endif + + #if ! GLIB_CHECK_VERSION(2,14,0) diff --git a/pkgs/applications/misc/viking/implicit-declaration.patch b/pkgs/applications/misc/viking/implicit-declaration.patch new file mode 100644 index 00000000000..60f8ad1177f --- /dev/null +++ b/pkgs/applications/misc/viking/implicit-declaration.patch @@ -0,0 +1,13 @@ +Debian patch that fixes an implicat declaration. + +diff -urNad trunk~/src/util.c trunk/src/util.c +--- trunk~/src/util.c 2009-02-08 14:47:01.000000000 +0100 ++++ trunk/src/util.c 2009-04-15 17:23:44.000000000 +0200 +@@ -26,6 +26,7 @@ + #endif + + #include ++#include + + #include "dialog.h" + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 945193aac6b..a6f522888e4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1357,7 +1357,7 @@ let viking = import ../applications/misc/viking { inherit fetchurl stdenv pkgconfig intltool gettext expat curl - bc file; + gpsd bc file; inherit (gtkLibs) gtk; };