README 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. = Developer Tools
  2. :date: 13 January 2021
  3. :description: Developer tools for gpsd developers
  4. :keywords: GPSD, GPS, developer
  5. :robots: index,follow
  6. :title: Developer Tools
  7. :toc:
  8. This is a list of developer tools included in the source repository
  9. but not necessarily shipped in the tarball or binary distributions If you're
  10. viewing it with Emacs, you can try doing Ctl-C Ctl-t browse through
  11. the outline headers. Ctl-C Ctl-a will unfold them again.
  12. == ais.py
  13. AIS packet decoder in Python. Useful as a check on the C code.
  14. Also, if you have AISHub privileges (see <http://www.aishub.net/>),
  15. a command like
  16. nc data.aishub.net 4006 | devtools/ais.py -c -v -t RANGE >AIS.LOG 2>&1"
  17. is a handy way to capture filtered AIS samples; RANGE can be a comma-separated
  18. list of AIS types.
  19. == aidvmtable
  20. Generate an asciidoc table of the six-bit encoding used in AIVDM packets.
  21. == cycle_analyzer
  22. Finds end-of-cycle sentences from GPS output logs.
  23. == dchroot-exec
  24. Very simple wrapper around the DSA version of dchroot
  25. on the Debian porter boxes. dchroot only accepts one command
  26. as argument, nothing else. This wrapper creates a temporary script
  27. which will be executed then.
  28. == do-build
  29. Very simple wrapper around scons clean, build, and check, saving
  30. output in a file named with "git describe".
  31. == easyinverse.pl
  32. Generate random pairirs of mutually inverse covariance matrices
  33. suitable for testing a matrix-inversion algorithm.
  34. == editcomment
  35. Give this a commit-ID specification. It will edit the associated comment.
  36. Usual caveats apply; the edited one and all commits after will change IDs,
  37. and pushing them to a repo with the old commits will wreak havoc.
  38. Note also that this cavalierly overwrites refs/original.
  39. == fakeserver
  40. Analogue of gpsfake. Impersonates a gpsd, spewing specified data to
  41. clients connecting to localhost:2947
  42. == fakecompare
  43. Compare the results from running gpsfake on a logfile between this
  44. machine and a remote one. Especially useful when remote and local
  45. have different word lengths.
  46. == gpsd-debian-regressions.sh
  47. Retrieves the latest build logs from Debian's buildds and extracts a
  48. list of failed regression tests, sorted by architecture.
  49. == identify_failing_build_options.py
  50. Run from the top level to try to identify any combinations of build
  51. options that don't compile. To run cd to the root of the repo and
  52. run "devtools/identify_failing_build_options.py" it will generate
  53. failed_build_configs.txt for any that failed to compile.
  54. == logextract
  55. Extract pure NMEA from an emailed gpsd error log. The output can be fed
  56. to gpsfake.
  57. == regress-builder
  58. This script runs an exhaustive test on combinations of compilation options,
  59. looking for ones that break the build.
  60. == regressdiff
  61. Walk through a pair of text files looking for where they begin to differ.
  62. May be useful for comparing logs when regression tests break.
  63. == reindent
  64. Try to reindent the code in a uniform style.
  65. == sizes
  66. Test-build interesting versions of the daemon and display their sizes.
  67. == striplog
  68. Strip leading comment lines from NMEA sentence logs. gpsfake can do
  69. this itself now, so this script has a lot of dust on it.
  70. == tablegen.py
  71. Generate most of the code required to support a message type from
  72. AIVDM message layout tables. Also, redo their bit offsets to be
  73. conformant with field lengths.
  74. == test_json_validity.py
  75. Test a file full of lines containing GPSD-JSON reports to verify that each
  76. line is in fact well-formed JSON.