summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'media-radio/direwolf')
-rw-r--r--media-radio/direwolf/Manifest1
-rw-r--r--media-radio/direwolf/direwolf-1.5.ebuild59
-rw-r--r--media-radio/direwolf/files/1.5-makefile.patch295
-rw-r--r--media-radio/direwolf/files/direwolf-gpsd-API-9.patch213
-rw-r--r--media-radio/direwolf/metadata.xml12
5 files changed, 577 insertions, 3 deletions
diff --git a/media-radio/direwolf/Manifest b/media-radio/direwolf/Manifest
index 53191833547..04bed6f619c 100644
--- a/media-radio/direwolf/Manifest
+++ b/media-radio/direwolf/Manifest
@@ -1 +1,2 @@
DIST direwolf-1.4.tar.gz 17554878 BLAKE2B a8eea6777df93d66d67c993c23eba86f37ff1e23d95df842b17be1a9a0b83c4bb0b7b14b97f43a1756512d060e50136712d1d9d499b2567eabbe1092a2f5edf0 SHA512 597b0652e910642d5a3c538297e4306f9317c29b3629e7fd96cc33b92b2f09d743cea8b8a0cc6451347dc0877fcf1f3933a420ae58e33ad7be7d899f80036eb3
+DIST direwolf-1.5.tar.gz 17996557 BLAKE2B 6860075b764248f1e0ff06e2a533e2e31f65851ea45d74fb0aca11827940c6df0a8bab4b6b78aa98847ee54b2b344d3c5fc8da6947f9113d2fac6d3ea427d68b SHA512 c23e2ccebd47235f76a9583e14cf8e8df299b8f7456a6388534536e7b1114b3d9b9efee43da2c1708e01a0b9534db0ed93314368e20e9002bfcd5b3a2855d8a5
diff --git a/media-radio/direwolf/direwolf-1.5.ebuild b/media-radio/direwolf/direwolf-1.5.ebuild
new file mode 100644
index 00000000000..deaf27c9ab1
--- /dev/null
+++ b/media-radio/direwolf/direwolf-1.5.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit eutils systemd
+
+DESCRIPTION="Decoded Information from Radio Emissions for Windows Or Linux Fans"
+HOMEPAGE="https://github.com/wb2osz/direwolf/blob/master/README.md"
+SRC_URI="https://github.com/wb2osz/direwolf/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2 BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="gps hamlib udev"
+
+RDEPEND="
+ media-libs/alsa-lib:=
+ gps? ( sci-geosciences/gpsd )
+ hamlib? ( media-libs/hamlib )
+ udev? ( virtual/libudev )
+"
+BDEPEND="hamlib? ( virtual/pkgconfig )"
+DEPEND="${RDEPEND}"
+
+DOCS=( CHANGES.md README.md doc/2400-4800-PSK-for-APRS-Packet-Radio.pdf doc/A-Better-APRS-Packet-Demodulator-Part-1-1200-baud.pdf doc/A-Better-APRS-Packet-Demodulator-Part-2-9600-baud.pdf doc/A-Closer-Look-at-the-WA8LMF-TNC-Test-CD.pdf doc/APRS-Telemetry-Toolkit.pdf doc/APRStt-Implementation-Notes.pdf doc/APRStt-interface-for-SARTrack.pdf doc/APRStt-Listening-Example.pdf doc/Going-beyond-9600-baud.pdf doc/Raspberry-Pi-APRS.pdf doc/Raspberry-Pi-APRS-Tracker.pdf doc/Raspberry-Pi-SDR-IGate.pdf doc/README.md doc/Successful-APRS-IGate-Operation.pdf doc/User-Guide.pdf doc/WA8LMF-TNC-Test-CD-Results.pdf direwolf.conf dw-start.sh sdr.conf telemetry-toolkit/telem-m0xer-3.txt telemetry-toolkit/telem-balloon.conf telemetry-toolkit/telem-volts.conf )
+
+INSTALLDIR="${D}"
+
+src_prepare() {
+ eapply "${FILESDIR}/${PV}-makefile.patch"
+ eapply "${FILESDIR}/direwolf-gpsd-API-9.patch"
+
+ eapply_user
+
+ if use gps ; then
+ sed -i -e 's/#enable_gpsd/enable_gpsd/' Makefile.linux || die "Sed failed!"
+ fi
+
+ if use hamlib; then
+ sed -i -e 's/#enable_hamlib/enable_hamlib/' Makefile.linux || die "Sed failed!"
+ fi
+
+ if use udev ; then
+ sed -i -e 's/#enable_cm108/enable_cm108/' Makefile.linux || die "Sed failed!"
+ fi
+}
+
+src_install() {
+ dodir /usr
+ dodir /usr/bin
+ keepdir /var/log/direwolf
+ emake DESTDIR="${D}" install
+ insinto /etc/direwolf/
+ doins direwolf.conf
+ einstalldocs
+ systemd_dounit "${FILESDIR}"/direwolf.service
+ systemd_dounit "${FILESDIR}"/direwolf-kiss.service
+}
diff --git a/media-radio/direwolf/files/1.5-makefile.patch b/media-radio/direwolf/files/1.5-makefile.patch
new file mode 100644
index 00000000000..860d57811aa
--- /dev/null
+++ b/media-radio/direwolf/files/1.5-makefile.patch
@@ -0,0 +1,295 @@
+--- direwolf-1.5/Makefile.linux.orig 2020-09-13 16:24:04.878630130 +0200
++++ direwolf-1.5/Makefile.linux 2020-09-13 16:30:13.744462027 +0200
+@@ -13,7 +13,7 @@
+ @echo " sudo make install"
+ @echo " "
+
+-CC := gcc
++#CC := gcc
+
+ # Just for fun, let's see how clang compares to gcc. First install like this:
+ # sudo apt-get update
+@@ -32,7 +32,7 @@
+ # we will inherit options already set in build environment.
+ # Explanation - https://github.com/wb2osz/direwolf/pull/38
+
+-CFLAGS += -O3 -pthread -Igeotranz -D_XOPEN_SOURCE=600 -D_DEFAULT_SOURCE=1 -Wall
++CFLAGS += -pthread -Igeotranz -D_XOPEN_SOURCE=600 -D_DEFAULT_SOURCE=1
+
+ # That was fine for a recent Ubuntu and Raspbian Jessie.
+ # However, Raspbian wheezy was then missing declaration for strsep and definition of fd_set.
+@@ -97,7 +97,7 @@
+
+ arch := $(shell echo | gcc -E -dM - | grep __i386__)
+ ifneq ($(arch),)
+-CFLAGS += -march=pentium3
++#CFLAGS += -march=pentium3
+ endif
+
+
+@@ -154,7 +154,7 @@
+
+ useffast := $(shell gcc --help -v 2>/dev/null | grep ffast-math)
+ ifneq ($(useffast),)
+-CFLAGS += -ffast-math
++#CFLAGS += -ffast-math
+ endif
+
+
+@@ -217,7 +217,7 @@
+
+ neon := $(shell cat /proc/cpuinfo | grep neon)
+ ifneq ($(neon),)
+-CFLAGS += -mfpu=neon
++#CFLAGS += -mfpu=neon
+ endif
+
+
+@@ -276,7 +276,7 @@
+ # Finding libgps.so* is more difficult because it
+ # is in different places on different operating systems.
+
+-enable_gpsd := $(wildcard /usr/include/gps.h)
++#enable_gpsd := 1
+ ifneq ($(enable_gpsd),)
+ CFLAGS += -DENABLE_GPSD
+ LDFLAGS += -lgps
+@@ -285,10 +285,10 @@
+
+ # Enable hamlib support if header file is present.
+
+-enable_hamlib := $(wildcard /usr/include/hamlib/rig.h /usr/local/include/hamlib/rig.h)
++#enable_hamlib := 1
+ ifneq ($(enable_hamlib),)
+ CFLAGS += -DUSE_HAMLIB
+-LDFLAGS += -lhamlib
++LDFLAGS += $(shell pkg-config --libs hamlib)
+ endif
+
+
+@@ -304,7 +304,7 @@
+
+ # Enable cm108 PTT support if libudev header file is present.
+
+-enable_cm108 := $(wildcard /usr/include/libudev.h)
++#enable_cm108 := 1
+ ifneq ($(enable_cm108),)
+ CFLAGS += -DUSE_CM108
+ LDFLAGS += -ludev
+@@ -536,6 +536,7 @@
+ # If not specified on the make command line, this is our default.
+
+ DESTDIR ?= /usr/local
++INSTALLDIR ?= $(DESTDIR)/usr/
+
+ # However, if you are preparing a "binary" DEB or RPM package, the installation location
+ # would normally be /usr/... instead. In this case, use a command line like this:
+@@ -560,15 +561,15 @@
+ @echo '[Desktop Entry]' > $@
+ @echo 'Type=Application' >> $@
+ ifneq ($(wildcard /usr/bin/lxterminal),)
+- @echo "Exec=lxterminal -t \"Dire Wolf\" -e \"$(DESTDIR)/bin/direwolf\"" >> $@
++ @echo "Exec=lxterminal -t \"Dire Wolf\" -e \"$(INSTALLDIR)/bin/direwolf\"" >> $@
+ else ifneq ($(wildcard /usr/bin/lxterm),)
+- @echo "Exec=lxterm -hold -title \"Dire Wolf\" -bg white -e \"$(DESTDIR)/bin/direwolf\"" >> $@
++ @echo "Exec=lxterm -hold -title \"Dire Wolf\" -bg white -e \"$(INSTALLDIR)/bin/direwolf\"" >> $@
+ else
+- @echo "Exec=xterm -hold -title \"Dire Wolf\" -bg white -e \"$(DESTDIR)/bin/direwolf\"" >> $@
++ @echo "Exec=xterm -hold -title \"Dire Wolf\" -bg white -e \"$(INSTALLDIR)/bin/direwolf\"" >> $@
+ endif
+ @echo 'Name=Dire Wolf' >> $@
+ @echo 'Comment=APRS Soundcard TNC' >> $@
+- @echo 'Icon=$(DESTDIR)/share/direwolf/pixmaps/dw-icon.png' >> $@
++ @echo 'Icon=$(INSTALLDIR)/share/direwolf/pixmaps/dw-icon.png' >> $@
+ @echo "Path=$(HOME)" >> $@
+ @echo '#Terminal=true' >> $@
+ @echo 'Categories=HamRadio' >> $@
+@@ -585,102 +586,104 @@
+ # Applications, not installed with package manager, normally go in /usr/local/bin.
+ # /usr/bin is used instead when installing from .DEB or .RPM package.
+ #
+- $(INSTALL) -D --mode=755 direwolf $(DESTDIR)/bin/direwolf
+- $(INSTALL) -D --mode=755 decode_aprs $(DESTDIR)/bin/decode_aprs
+- $(INSTALL) -D --mode=755 text2tt $(DESTDIR)/bin/text2tt
+- $(INSTALL) -D --mode=755 tt2text $(DESTDIR)/bin/tt2text
+- $(INSTALL) -D --mode=755 ll2utm $(DESTDIR)/bin/ll2utm
+- $(INSTALL) -D --mode=755 utm2ll $(DESTDIR)/bin/utm2ll
+- $(INSTALL) -D --mode=755 aclients $(DESTDIR)/bin/aclients
+- $(INSTALL) -D --mode=755 log2gpx $(DESTDIR)/bin/log2gpx
+- $(INSTALL) -D --mode=755 gen_packets $(DESTDIR)/bin/gen_packets
+- $(INSTALL) -D --mode=755 atest $(DESTDIR)/bin/atest
+- $(INSTALL) -D --mode=755 ttcalc $(DESTDIR)/bin/ttcalc
+- $(INSTALL) -D --mode=755 kissutil $(DESTDIR)/bin/kissutil
+- $(INSTALL) -D --mode=755 cm108 $(DESTDIR)/bin/cm108
+- $(INSTALL) -D --mode=755 dwespeak.sh $(DESTDIR)/bin/dwspeak.sh
++ $(INSTALL) -D --mode=755 direwolf $(INSTALLDIR)/bin/direwolf
++ $(INSTALL) -D --mode=755 decode_aprs $(INSTALLDIR)/bin/decode_aprs
++ $(INSTALL) -D --mode=755 text2tt $(INSTALLDIR)/bin/text2tt
++ $(INSTALL) -D --mode=755 tt2text $(INSTALLDIR)/bin/tt2text
++ $(INSTALL) -D --mode=755 ll2utm $(INSTALLDIR)/bin/ll2utm
++ $(INSTALL) -D --mode=755 utm2ll $(INSTALLDIR)/bin/utm2ll
++ $(INSTALL) -D --mode=755 aclients $(INSTALLDIR)/bin/aclients
++ $(INSTALL) -D --mode=755 log2gpx $(INSTALLDIR)/bin/log2gpx
++ $(INSTALL) -D --mode=755 gen_packets $(INSTALLDIR)/bin/gen_packets
++ $(INSTALL) -D --mode=755 atest $(INSTALLDIR)/bin/atest
++ $(INSTALL) -D --mode=755 ttcalc $(INSTALLDIR)/bin/ttcalc
++ $(INSTALL) -D --mode=755 kissutil $(INSTALLDIR)/bin/kissutil
++ $(INSTALL) -D --mode=755 cm108 $(INSTALLDIR)/bin/cm108
++ $(INSTALL) -D --mode=755 dwespeak.sh $(INSTALLDIR)/bin/dwspeak.sh
+ #
+ # Telemetry Toolkit executables. Other .conf and .txt files will go into doc directory.
+ #
+- $(INSTALL) -D --mode=755 telemetry-toolkit/telem-balloon.pl $(DESTDIR)/bin/telem-balloon.pl
+- $(INSTALL) -D --mode=755 telemetry-toolkit/telem-bits.pl $(DESTDIR)/bin/telem-bits.pl
+- $(INSTALL) -D --mode=755 telemetry-toolkit/telem-data.pl $(DESTDIR)/bin/telem-data.pl
+- $(INSTALL) -D --mode=755 telemetry-toolkit/telem-data91.pl $(DESTDIR)/bin/telem-data91.pl
+- $(INSTALL) -D --mode=755 telemetry-toolkit/telem-eqns.pl $(DESTDIR)/bin/telem-eqns.pl
+- $(INSTALL) -D --mode=755 telemetry-toolkit/telem-parm.pl $(DESTDIR)/bin/telem-parm.pl
+- $(INSTALL) -D --mode=755 telemetry-toolkit/telem-seq.sh $(DESTDIR)/bin/telem-seq.sh
+- $(INSTALL) -D --mode=755 telemetry-toolkit/telem-unit.pl $(DESTDIR)/bin/telem-unit.pl
+- $(INSTALL) -D --mode=755 telemetry-toolkit/telem-volts.py $(DESTDIR)/bin/telem-volts.py
++ $(INSTALL) -D --mode=755 telemetry-toolkit/telem-balloon.pl $(INSTALLDIR)/bin/telem-balloon.pl
++ $(INSTALL) -D --mode=755 telemetry-toolkit/telem-bits.pl $(INSTALLDIR)/bin/telem-bits.pl
++ $(INSTALL) -D --mode=755 telemetry-toolkit/telem-data.pl $(INSTALLDIR)/bin/telem-data.pl
++ $(INSTALL) -D --mode=755 telemetry-toolkit/telem-data91.pl $(INSTALLDIR)/bin/telem-data91.pl
++ $(INSTALL) -D --mode=755 telemetry-toolkit/telem-eqns.pl $(INSTALLDIR)/bin/telem-eqns.pl
++ $(INSTALL) -D --mode=755 telemetry-toolkit/telem-parm.pl $(INSTALLDIR)/bin/telem-parm.pl
++ $(INSTALL) -D --mode=755 telemetry-toolkit/telem-seq.sh $(INSTALLDIR)/bin/telem-seq.sh
++ $(INSTALL) -D --mode=755 telemetry-toolkit/telem-unit.pl $(INSTALLDIR)/bin/telem-unit.pl
++ $(INSTALL) -D --mode=755 telemetry-toolkit/telem-volts.py $(INSTALLDIR)/bin/telem-volts.py
+ #
+ # Misc. data such as "tocall" to system mapping.
+ #
+- $(INSTALL) -D --mode=644 tocalls.txt $(DESTDIR)/share/direwolf/tocalls.txt
+- $(INSTALL) -D --mode=644 symbols-new.txt $(DESTDIR)/share/direwolf/symbols-new.txt
+- $(INSTALL) -D --mode=644 symbolsX.txt $(DESTDIR)/share/direwolf/symbolsX.txt
++ $(INSTALL) -D --mode=644 tocalls.txt $(INSTALLDIR)/share/direwolf/tocalls.txt
++ $(INSTALL) -D --mode=644 symbols-new.txt $(INSTALLDIR)/share/direwolf/symbols-new.txt
++ $(INSTALL) -D --mode=644 symbolsX.txt $(INSTALLDIR)/share/direwolf/symbolsX.txt
+ #
+ # For desktop icon.
+ #
+- $(INSTALL) -D --mode=644 dw-icon.png $(DESTDIR)/share/direwolf/pixmaps/dw-icon.png
+- $(INSTALL) -D --mode=644 direwolf.desktop $(DESTDIR)/share/applications/direwolf.desktop
++ $(INSTALL) -D --mode=644 dw-icon.png $(INSTALLDIR)/share/direwolf/pixmaps/dw-icon.png
++ $(INSTALL) -D --mode=644 direwolf.desktop $(INSTALLDIR)/share/applications/direwolf.desktop
+ #
+ # Documentation. Various plain text files and PDF.
+ #
+- $(INSTALL) -D --mode=644 CHANGES.md $(DESTDIR)/share/doc/direwolf/CHANGES.md
+- $(INSTALL) -D --mode=644 LICENSE-dire-wolf.txt $(DESTDIR)/share/doc/direwolf/LICENSE-dire-wolf.txt
+- $(INSTALL) -D --mode=644 LICENSE-other.txt $(DESTDIR)/share/doc/direwolf/LICENSE-other.txt
++ $(INSTALL) -D --mode=644 CHANGES.md $(INSTALLDIR)/share/doc/direwolf-$(PV)/CHANGES.md
++ $(INSTALL) -D --mode=644 LICENSE-dire-wolf.txt $(INSTALLDIR)/share/doc/direwolf-$(PV)/LICENSE-dire-wolf.txt
++ $(INSTALL) -D --mode=644 LICENSE-other.txt $(INSTALLDIR)/share/doc/direwolf-$(PV)/LICENSE-other.txt
+ #
+ # ./README.md is an overview for the project main page.
+ # Maybe we could stick it in some other place.
+ # doc/README.md contains an overview of the PDF file contents and is more useful here.
+ #
+- $(INSTALL) -D --mode=644 doc/README.md $(DESTDIR)/share/doc/direwolf/README.md
+- $(INSTALL) -D --mode=644 doc/2400-4800-PSK-for-APRS-Packet-Radio.pdf $(DESTDIR)/share/doc/direwolf/2400-4800-PSK-for-APRS-Packet-Radio.pdf
+- $(INSTALL) -D --mode=644 doc/A-Better-APRS-Packet-Demodulator-Part-1-1200-baud.pdf $(DESTDIR)/share/doc/direwolf/A-Better-APRS-Packet-Demodulator-Part-1-1200-baud.pdf
+- $(INSTALL) -D --mode=644 doc/A-Better-APRS-Packet-Demodulator-Part-2-9600-baud.pdf $(DESTDIR)/share/doc/direwolf/A-Better-APRS-Packet-Demodulator-Part-2-9600-baud.pdf
+- $(INSTALL) -D --mode=644 doc/A-Closer-Look-at-the-WA8LMF-TNC-Test-CD.pdf $(DESTDIR)/share/doc/direwolf/A-Closer-Look-at-the-WA8LMF-TNC-Test-CD.pdf
+- $(INSTALL) -D --mode=644 doc/APRS-Telemetry-Toolkit.pdf $(DESTDIR)/share/doc/direwolf/APRS-Telemetry-Toolkit.pdf
+- $(INSTALL) -D --mode=644 doc/APRStt-Implementation-Notes.pdf $(DESTDIR)/share/doc/direwolf/APRStt-Implementation-Notes.pdf
+- $(INSTALL) -D --mode=644 doc/APRStt-interface-for-SARTrack.pdf $(DESTDIR)/share/doc/direwolf/APRStt-interface-for-SARTrack.pdf
+- $(INSTALL) -D --mode=644 doc/APRStt-Listening-Example.pdf $(DESTDIR)/share/doc/direwolf/APRStt-Listening-Example.pdf
+- $(INSTALL) -D --mode=644 doc/Bluetooth-KISS-TNC.pdf $(DESTDIR)/share/doc/direwolf/Bluetooth-KISS-TNC.pdf
+- $(INSTALL) -D --mode=644 doc/Going-beyond-9600-baud.pdf $(DESTDIR)/share/doc/direwolf/Going-beyond-9600-baud.pdf
+- $(INSTALL) -D --mode=644 doc/Raspberry-Pi-APRS.pdf $(DESTDIR)/share/doc/direwolf/Raspberry-Pi-APRS.pdf
+- $(INSTALL) -D --mode=644 doc/Raspberry-Pi-APRS-Tracker.pdf $(DESTDIR)/share/doc/direwolf/Raspberry-Pi-APRS-Tracker.pdf
+- $(INSTALL) -D --mode=644 doc/Raspberry-Pi-SDR-IGate.pdf $(DESTDIR)/share/doc/direwolf/Raspberry-Pi-SDR-IGate.pdf
+- $(INSTALL) -D --mode=644 doc/Successful-APRS-IGate-Operation.pdf $(DESTDIR)/share/doc/direwolf/Successful-APRS-IGate-Operation.pdf
+- $(INSTALL) -D --mode=644 doc/User-Guide.pdf $(DESTDIR)/share/doc/direwolf/User-Guide.pdf
+- $(INSTALL) -D --mode=644 doc/WA8LMF-TNC-Test-CD-Results.pdf $(DESTDIR)/share/doc/direwolf/WA8LMF-TNC-Test-CD-Results.pdf
++ $(INSTALL) -D --mode=644 doc/README.md $(INSTALLDIR)/share/doc/direwolf-$(PV)/README.md
++ $(INSTALL) -D --mode=644 doc/2400-4800-PSK-for-APRS-Packet-Radio.pdf $(INSTALLDIR)/share/doc/direwolf-$(PV)/2400-4800-PSK-for-APRS-Packet-Radio.pdf
++ $(INSTALL) -D --mode=644 doc/A-Better-APRS-Packet-Demodulator-Part-1-1200-baud.pdf $(INSTALLDIR)/share/doc/direwolf-$(PV)/A-Better-APRS-Packet-Demodulator-Part-1-1200-baud.pdf
++ $(INSTALL) -D --mode=644 doc/A-Better-APRS-Packet-Demodulator-Part-2-9600-baud.pdf $(INSTALLDIR)/share/doc/direwolf-$(PV)/A-Better-APRS-Packet-Demodulator-Part-2-9600-baud.pdf
++ $(INSTALL) -D --mode=644 doc/A-Closer-Look-at-the-WA8LMF-TNC-Test-CD.pdf $(INSTALLDIR)/share/doc/direwolf-$(PV)/A-Closer-Look-at-the-WA8LMF-TNC-Test-CD.pdf
++ $(INSTALL) -D --mode=644 doc/APRS-Telemetry-Toolkit.pdf $(INSTALLDIR)/share/doc/direwolf-$(PV)/APRS-Telemetry-Toolkit.pdf
++ $(INSTALL) -D --mode=644 doc/APRStt-Implementation-Notes.pdf $(INSTALLDIR)/share/doc/direwolf-$(PV)/APRStt-Implementation-Notes.pdf
++ $(INSTALL) -D --mode=644 doc/APRStt-interface-for-SARTrack.pdf $(INSTALLDIR)/share/doc/direwolf-$(PV)/APRStt-interface-for-SARTrack.pdf
++ $(INSTALL) -D --mode=644 doc/APRStt-Listening-Example.pdf $(INSTALLDIR)/share/doc/direwolf-$(PV)/APRStt-Listening-Example.pdf
++ $(INSTALL) -D --mode=644 doc/Bluetooth-KISS-TNC.pdf $(INSTALLDIR)/share/doc/direwolf-$(PV)/Bluetooth-KISS-TNC.pdf
++ $(INSTALL) -D --mode=644 doc/Going-beyond-9600-baud.pdf $(INSTALLDIR)/share/doc/direwolf-$(PV)/Going-beyond-9600-baud.pdf
++ $(INSTALL) -D --mode=644 doc/Raspberry-Pi-APRS.pdf $(INSTALLDIR)/share/doc/direwolf-$(PV)/Raspberry-Pi-APRS.pdf
++ $(INSTALL) -D --mode=644 doc/Raspberry-Pi-APRS-Tracker.pdf $(INSTALLDIR)/share/doc/direwolf-$(PV)/Raspberry-Pi-APRS-Tracker.pdf
++ $(INSTALL) -D --mode=644 doc/Raspberry-Pi-SDR-IGate.pdf $(INSTALLDIR)/share/doc/direwolf-$(PV)/Raspberry-Pi-SDR-IGate.pdf
++ $(INSTALL) -D --mode=644 doc/Successful-APRS-IGate-Operation.pdf $(INSTALLDIR)/share/doc/direwolf-$(PV)/Successful-APRS-IGate-Operation.pdf
++ $(INSTALL) -D --mode=644 doc/User-Guide.pdf $(INSTALLDIR)/share/doc/direwolf-$(PV)/User-Guide.pdf
++ $(INSTALL) -D --mode=644 doc/WA8LMF-TNC-Test-CD-Results.pdf $(INSTALLDIR)/share/doc/direwolf-$(PV)/WA8LMF-TNC-Test-CD-Results.pdf
+ #
+ # Various sample config and other files go into examples under the doc directory.
+ # When building from source, these can be put in home directory with "make install-conf".
+ # When installed from .DEB or .RPM package, the user will need to copy these to
+ # the home directory or other desired location.
+ #
+- $(INSTALL) -D --mode=644 direwolf.conf $(DESTDIR)/share/doc/direwolf/examples/direwolf.conf
+- $(INSTALL) -D --mode=755 dw-start.sh $(DESTDIR)/share/doc/direwolf/examples/dw-start.sh
+- $(INSTALL) -D --mode=644 sdr.conf $(DESTDIR)/share/doc/direwolf/examples/sdr.conf
+- $(INSTALL) -D --mode=644 telemetry-toolkit/telem-m0xer-3.txt $(DESTDIR)/share/doc/direwolf/examples/telem-m0xer-3.txt
+- $(INSTALL) -D --mode=644 telemetry-toolkit/telem-balloon.conf $(DESTDIR)/share/doc/direwolf/examples/telem-balloon.conf
+- $(INSTALL) -D --mode=644 telemetry-toolkit/telem-volts.conf $(DESTDIR)/share/doc/direwolf/examples/telem-volts.conf
++ $(INSTALL) -D --mode=644 direwolf.conf $(INSTALLDIR)/share/doc/direwolf-$(PV)/examples/direwolf.conf
++ $(INSTALL) -D --mode=755 dw-start.sh $(INSTALLDIR)/share/doc/direwolf-$(PV)/examples/dw-start.sh
++ $(INSTALL) -D --mode=644 sdr.conf $(INSTALLDIR)/share/doc/direwolf-$(PV)/examples/sdr.conf
++ $(INSTALL) -D --mode=644 telemetry-toolkit/telem-m0xer-3.txt $(INSTALLDIR)/share/doc/direwolf-$(PV)/examples/telem-m0xer-3.txt
++ $(INSTALL) -D --mode=644 telemetry-toolkit/telem-balloon.conf $(INSTALLDIR)/share/doc/direwolf-$(PV)/examples/telem-balloon.conf
++ $(INSTALL) -D --mode=644 telemetry-toolkit/telem-volts.conf $(INSTALLDIR)/share/doc/direwolf-$(PV)/examples/telem-volts.conf
+ #
+ # "man" pages
+ #
+- $(INSTALL) -D --mode=644 man1/aclients.1 $(DESTDIR)/share/man/man1/aclients.1
+- $(INSTALL) -D --mode=644 man1/atest.1 $(DESTDIR)/share/man/man1/atest.1
+- $(INSTALL) -D --mode=644 man1/decode_aprs.1 $(DESTDIR)/share/man/man1/decode_aprs.1
+- $(INSTALL) -D --mode=644 man1/direwolf.1 $(DESTDIR)/share/man/man1/direwolf.1
+- $(INSTALL) -D --mode=644 man1/gen_packets.1 $(DESTDIR)/share/man/man1/gen_packets.1
+- $(INSTALL) -D --mode=644 man1/kissutil.1 $(DESTDIR)/share/man/man1/kissutil.1
+- $(INSTALL) -D --mode=644 man1/ll2utm.1 $(DESTDIR)/share/man/man1/ll2utm.1
+- $(INSTALL) -D --mode=644 man1/log2gpx.1 $(DESTDIR)/share/man/man1/log2gpx.1
+- $(INSTALL) -D --mode=644 man1/text2tt.1 $(DESTDIR)/share/man/man1/text2tt.1
+- $(INSTALL) -D --mode=644 man1/tt2text.1 $(DESTDIR)/share/man/man1/tt2text.1
+- $(INSTALL) -D --mode=644 man1/utm2ll.1 $(DESTDIR)/share/man/man1/utm2ll.1
++ $(INSTALL) -D --mode=644 man1/aclients.1 $(INSTALLDIR)/share/man/man1/aclients.1
++ $(INSTALL) -D --mode=644 man1/atest.1 $(INSTALLDIR)/share/man/man1/atest.1
++ $(INSTALL) -D --mode=644 man1/decode_aprs.1 $(INSTALLDIR)/share/man/man1/decode_aprs.1
++ $(INSTALL) -D --mode=644 man1/direwolf.1 $(INSTALLDIR)/share/man/man1/direwolf.1
++ $(INSTALL) -D --mode=644 man1/gen_packets.1 $(INSTALLDIR)/share/man/man1/gen_packets.1
++ $(INSTALL) -D --mode=644 man1/kissutil.1 $(INSTALLDIR)/share/man/man1/kissutil.1
++ $(INSTALL) -D --mode=644 man1/ll2utm.1 $(INSTALLDIR)/share/man/man1/ll2utm.1
++ $(INSTALL) -D --mode=644 man1/log2gpx.1 $(INSTALLDIR)/share/man/man1/log2gpx.1
++ $(INSTALL) -D --mode=644 man1/text2tt.1 $(INSTALLDIR)/share/man/man1/text2tt.1
++ $(INSTALL) -D --mode=644 man1/tt2text.1 $(INSTALLDIR)/share/man/man1/tt2text.1
++ $(INSTALL) -D --mode=644 man1/utm2ll.1 $(INSTALLDIR)/share/man/man1/utm2ll.1
+ #
+ # Set group and mode of HID devices corresponding to C-Media USB Audio adapters.
+ # This will allow us to use the CM108/CM119 GPIO pins for PTT.
+ #
+- $(INSTALL) -D --mode=644 99-direwolf-cmedia.rules /etc/udev/rules.d/99-direwolf-cmedia.rules
++ifneq ($(enable_cm108),)
++ $(INSTALL) -D --mode=644 99-direwolf-cmedia.rules $(DESTDIR)/lib/udev/rules.d/99-direwolf-cmedia.rules
++endif
+ #
+ @echo " "
+ @echo "If this is your first install, not an upgrade, type this to put a copy"
+@@ -693,7 +696,7 @@
+ # Put sample configuration & startup files in home directory.
+ # This step would be done as ordinary user.
+ # Some people like to put the direwolf config file in /etc/ax25.
+-# Note that all of these are also in $(DESTDIR)/share/doc/direwolf/examples/.
++# Note that all of these are also in $(INSTALLDIR)/share/doc/direwolf/examples/.
+
+ # The Raspberry Pi has ~/Desktop but Ubuntu does not.
+
+@@ -724,7 +727,7 @@
+
+ .PHONY: install-rpi
+ install-rpi :
+- ln -f -s $(DESTDIR)/share/applications/direwolf.desktop ~/Desktop/direwolf.desktop
++ ln -f -s $(INSTALLDIR)/share/applications/direwolf.desktop ~/Desktop/direwolf.desktop
+
+
+
diff --git a/media-radio/direwolf/files/direwolf-gpsd-API-9.patch b/media-radio/direwolf/files/direwolf-gpsd-API-9.patch
new file mode 100644
index 00000000000..ffaf84dee56
--- /dev/null
+++ b/media-radio/direwolf/files/direwolf-gpsd-API-9.patch
@@ -0,0 +1,213 @@
+--- direwolf-1.5/dwgpsd.orig.c 2020-09-13 13:25:07.294828708 +0200
++++ direwolf-1.5/dwgpsd.c 2020-09-13 13:26:48.957086728 +0200
+@@ -1,7 +1,7 @@
+ //
+ // This file is part of Dire Wolf, an amateur radio packet TNC.
+ //
+-// Copyright (C) 2013, 2014, 2015 John Langner, WB2OSZ
++// Copyright (C) 2013, 2014, 2015, 2020 John Langner, WB2OSZ
+ //
+ // This program is free software: you can redistribute it and/or modify
+ // it under the terms of the GNU General Public License as published by
+@@ -54,10 +54,10 @@
+
+ #include <gps.h>
+
+-// Debian bug report: direwolf (1.2-1) FTBFS with libgps22 as part of the gpsd transition (#803605):
+-// dwgps.c claims to only support GPSD_API_MAJOR_VERSION 5, but also builds successfully with
+-// GPSD_API_MAJOR_VERSION 6 provided by libgps22 when the attached patch is applied.
+-#if GPSD_API_MAJOR_VERSION < 5 || GPSD_API_MAJOR_VERSION > 6
++// An incompatibility was introduced with version 7
++// and again with 9 and again with 10.
++
++#if GPSD_API_MAJOR_VERSION < 5 || GPSD_API_MAJOR_VERSION > 10
+ #error libgps API version might be incompatible.
+ #endif
+
+@@ -112,7 +112,7 @@
+ * shared region via dwgps_put_data.
+ *
+ * The application calls dwgps_read to get the most
+- 8 recent information.
++ * recent information.
+ *
+ *--------------------------------------------------------------------*/
+
+@@ -122,7 +122,7 @@
+ * Originally, I wanted to use the shared memory interface to gpsd
+ * because it is simpler and more efficient. Just access it when we
+ * actually need the data and we don't have a lot of extra unnecessary
+- * busy work going on.
++ * busy work going on constantly polling it when we don't need the information.
+ *
+ * The current version of gpsd, supplied with Raspian (Wheezy), is 3.6 from back in
+ * May 2012, is missing support for the shared memory interface.
+@@ -138,13 +138,28 @@
+ * cd gpsd-3.11
+ * scons prefix=/usr libdir=lib/arm-linux-gnueabihf shm_export=True python=False
+ * sudo scons udev-install
+- *
++ *
+ * For now, we will use the socket interface. Maybe get back to this again someday.
+ *
+ * Update: January 2016.
+ *
+ * I'm told that the shared memory interface might work in Raspian, Jessie version.
+ * Haven't tried it yet.
++ *
++ * June 2020: This is how to build the most recent.
++ *
++ * Based on https://www.satsignal.eu/raspberry-pi/UpdatingGPSD.html
++ *
++ * git clone https://gitlab.com/gpsd/gpsd.git gpsd-gitlab
++ * cd gpsd-gitlab
++ * scons --config=force
++ * scons
++ * sudo scons install
++ *
++ * The problem we have here is that the library is put in /usr/local/lib and direwolf
++ * can't find it there. Solution is to define environment variable:
++ *
++ * export LD_LIBRARY_PATH=/use/local/lib
+ */
+
+
+@@ -228,7 +243,7 @@
+ *
+ *--------------------------------------------------------------------*/
+
+-#define TIMEOUT 30
++#define TIMEOUT 15
+
+ #if ENABLE_GPSD
+
+@@ -251,13 +266,34 @@
+
+ while (1) {
+
++// Example code found here:
++// https://lists.nongnu.org/archive/html/gpsd-dev/2017-11/msg00001.html
++
+ if ( ! gps_waiting(&gpsdata, TIMEOUT * 1000000)) {
+ text_color_set(DW_COLOR_ERROR);
+- dw_printf ("GPSD: Timeout waiting for GPS data.\n");
+- /* Fall thru to read which should get error and bail out. */
++ dw_printf ("------------------------------------------\n");
++ dw_printf ("dwgpsd: Timeout waiting for GPS data.\n");
++ dw_printf ("Is GPSD daemon running?\n");
++ dw_printf ("Troubleshooting tip: Try running cgps or xgps.\n");
++ dw_printf ("------------------------------------------\n");
++ info.fix = DWFIX_ERROR;
++ SLEEP_MS(5000);
++ continue;
+ }
+
++// https://github.com/wb2osz/direwolf/issues/196
++// https://bugzilla.redhat.com/show_bug.cgi?id=1674812
++
++// gps_read has two new parameters in API version 7.
++// It looks like this could be used to obtain the JSON message from the daemon.
++// Specify NULL, instead of message buffer space, if this is not desired.
++// Why couldn't they add a new function instead of introducing incompatibility?
++
++#if GPSD_API_MAJOR_VERSION >= 7
++ if (gps_read (&gpsdata, NULL, 0) == -1) {
++#else
+ if (gps_read (&gpsdata) == -1) {
++#endif
+ text_color_set(DW_COLOR_ERROR);
+
+ dw_printf ("------------------------------------------\n");
+@@ -274,16 +310,47 @@
+ break; // Jump out of loop and terminate thread.
+ }
+
++#if GPSD_API_MAJOR_VERSION >= 9
++
++// The gps.h revision history says:
++// * mark altitude in gps_fix_t as deprecated and undefined
++// This seems really stupid to me.
++// If it is deprecated and undefined then take it out. Someone trying to use
++// it would get a compile error and know that something needs to be done.
++// Instead we all just go merrily on our way using a field that is [allegedly] undefined.
++// Why not simply add more variables with different definitions of altitude
++// and keep the original variable working as it always did?
++// If it is truly undefined, as the comment would have us believe, numerous
++// people will WASTE VAST AMOUNTS OF TIME pondering why altitude is now broken in
++// their applications.
++
++#define stupid_altitude altMSL
++#else
++#define stupid_altitude altitude
++#endif
++
++#if GPSD_API_MAJOR_VERSION >= 10
++
++// They did it again. Whimsical incompatibilities that cause
++// pain and aggravation for everyone trying to use this library.
++//
++// error: ‘struct gps_data_t’ has no member named ‘status’
++//
++// Yes, I can understand that it is a more logical place but it breaks
++// all existing code that uses this.
++// I'm really getting annoyed about wasting so much time on keeping up with all
++// of these incompatibilities that are completely unnecessary.
++
++#define stupid_status fix.status
++#else
++#define stupid_status status
++#endif
++
++ // Inform user about change in fix status.
++
+ switch (gpsdata.fix.mode) {
+ default:
+ case MODE_NOT_SEEN:
+- if (info.fix >= DWFIX_2D) {
+- text_color_set(DW_COLOR_INFO);
+- dw_printf ("GPSD: Lost location fix.\n");
+- }
+- info.fix = DWFIX_NOT_SEEN;
+- break;
+-
+ case MODE_NO_FIX:
+ if (info.fix >= DWFIX_2D) {
+ text_color_set(DW_COLOR_INFO);
+@@ -309,11 +376,7 @@
+ break;
+ }
+
+- /* Data is available. */
+- // TODO: what is gpsdata.status?
+-
+-
+- if (gpsdata.status >= STATUS_FIX && gpsdata.fix.mode >= MODE_2D) {
++ if (gpsdata.stupid_status >= STATUS_FIX && gpsdata.fix.mode >= MODE_2D) {
+
+ info.dlat = isnan(gpsdata.fix.latitude) ? G_UNKNOWN : gpsdata.fix.latitude;
+ info.dlon = isnan(gpsdata.fix.longitude) ? G_UNKNOWN : gpsdata.fix.longitude;
+@@ -321,9 +384,15 @@
+ info.speed_knots = isnan(gpsdata.fix.speed) ? G_UNKNOWN : (MPS_TO_KNOTS * gpsdata.fix.speed);
+
+ if (gpsdata.fix.mode >= MODE_3D) {
+- info.altitude = isnan(gpsdata.fix.altitude) ? G_UNKNOWN : gpsdata.fix.altitude;
++ info.altitude = isnan(gpsdata.fix.stupid_altitude) ? G_UNKNOWN : gpsdata.fix.stupid_altitude;
+ }
+ }
++ else {
++ // Keep the last known location.
++ // Using info.fix, the caller knows if the location is current (DWFIX_[23]D),
++ // last known (DWFIX_NONE), or never known (DWFIX_NOT_SEEN).
++ info.fix = DWFIX_NO_FIX;
++ }
+
+ info.timestamp = time(NULL);
+ if (s_debug >= 2) {
+@@ -357,6 +426,7 @@
+
+ #if ENABLE_GPSD
+
++ gps_stream (&gpsdata, WATCH_DISABLE, NULL);
+ gps_close (&gpsdata);
+
+ #endif
diff --git a/media-radio/direwolf/metadata.xml b/media-radio/direwolf/metadata.xml
index b9c6cabfa90..b2d8ba721f3 100644
--- a/media-radio/direwolf/metadata.xml
+++ b/media-radio/direwolf/metadata.xml
@@ -1,7 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
-<maintainer type="person">
- <email>rich0@gentoo.org</email>
-</maintainer>
+ <maintainer type="person">
+ <email>rich0@gentoo.org</email>
+ </maintainer>
+ <use>
+ <flag name="hamlib">Enables support by the Hamlib amateur radio rig control library</flag>
+ </use>
+ <upstream>
+ <remote-id type="github">wb2osz/direwolf</remote-id>
+ </upstream>
</pkgmetadata>