[hamradio-commits] [freedv] 01/05: Packaging for fdmdv2 0.96.5.1353-1

Maitland Bottoms bottoms at moszumanska.debian.org
Sun Sep 3 23:26:31 UTC 2017


This is an automated email from the git hooks/post-receive script.

bottoms pushed a commit to branch debian
in repository freedv.

commit 89b2bcbec5c2434a232c1d5faf4d0f8a00cb2fc2
Author: A. Maitland Bottoms <bottoms at debian.org>
Date:   Sun Mar 23 14:47:24 2014 -0400

    Packaging for fdmdv2 0.96.5.1353-1
---
 debian/changelog                               |  31 +++
 debian/compat                                  |   1 +
 debian/control                                 |  31 +++
 debian/copyright                               | 309 ++++++++++++++++++++++
 debian/freedv.1                                |  91 +++++++
 debian/freedv.manpages                         |   1 +
 debian/patches/HID-PTT                         | 341 +++++++++++++++++++++++++
 debian/patches/Update-SVN-repository-URL.patch | 101 ++++++++
 debian/patches/convenience-copies              |  46 ++++
 debian/patches/convenience-copies.old          |  78 ++++++
 debian/patches/debian-build-svn-version        |  13 +
 debian/patches/debian-desktop                  |  14 +
 debian/patches/debug-stop-crash                |   9 +
 debian/patches/fix-config-include              |  11 +
 debian/patches/link-with-libXxf86vm            |  23 ++
 debian/patches/series                          |   8 +
 debian/rules                                   | 103 ++++++++
 debian/source/format                           |   1 +
 18 files changed, 1212 insertions(+)

diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..807efef
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,31 @@
+fdmdv2 (0.96.5.1353-1) experimental; urgency=low
+
+  * Upstream subversion r1353
+  * build-depend upon libwxgtk3.0-dev (Closes: #735959)
+    remove wxwidgets tarball from source (Closes: #735942, #736002)
+
+ -- A. Maitland Bottoms <bottoms at debian.org>  Sun, 19 Jan 2014 15:25:41 -0500
+
+fdmdv2 (0.96.5.1328-1) experimental; urgency=low
+
+  * New upstream subversion r1328 (AKA 0.96.5 Beta)
+  * Update wxWidgets 2.9.5 version
+  * cleanup source - see debian/rules get-orig-source, (Closes: #706184)
+  * HID-PTT patch included
+
+ -- A. Maitland Bottoms <bottoms at debian.org>  Fri, 30 Aug 2013 23:16:27 -0400
+
+fdmdv2 (0.96.1-1) experimental; urgency=low
+
+  * FreeDV.org Dayton 2013 packages
+  * New upstream subversion r1247
+
+ -- A. Maitland Bottoms <bottoms at debian.org>  Sat, 11 May 2013 10:43:03 -0400
+
+fdmdv2 (0.0.1235-1) experimental; urgency=low
+
+  * New upstream svn r1235 (Closes: #706184)
+  * Fancy source package for single binary freedv package for Wheezy
+  * HID-PTT patch included
+
+ -- A. Maitland Bottoms <bottoms at debian.org>  Fri, 26 Apr 2013 20:44:30 -0400
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..45a4fb7
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+8
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..4cfdc81
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,31 @@
+Source: fdmdv2
+Section: hamradio
+Priority: optional
+Maintainer: A. Maitland Bottoms <bottoms at debian.org>
+Build-Depends: debhelper (>= 8.0.0~), cmake, portaudio19-dev,
+ libsndfile-dev, libsox-dev, libsamplerate-dev, libhamlib-dev,
+ libwxgtk3.0-dev
+Standards-Version: 3.9.5
+Homepage: http://freedv.org/
+
+Package: freedv
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: Software Defined Radio (SDR)
+ FreeDV is a digital voice mode intended for transmission and
+ reception over high-frequency (HF) radio. It uses a frequency
+ division multiplex (FDM) modem with 15 carriers and no forward error
+ correction (FEC). A low bit-rate voice coder-decoder (Codec 2)
+ provides voice quality without the listener fatigue caused by noise
+ and interference normally associated with analog single sideband
+ (SSB) voice. A HF SSB transceiver, personal computer and two sound
+ cards are required. Path simulation and on-the-air HF testing have
+ shown that decoding voice is possible at a signal-to-noise ratio of
+ 4 dB.
+ . 
+ The FreeDV software was developed by David Rowe (Codec 2, FDM
+ modem implementation, integration) and David Witten (GUI,
+ architecture design). The FreeDV design and user interface was based
+ on the earlier FDMDV program which was developed by Francesco
+ Lanza. The FDM modem design and development was supported from Peter
+ Martinez.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..53b6ba2
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,309 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: freedv
+Upstream-Contact: http://freedv.org/
+Source:
+ The upstream package source tarballs was generated:
+ http://sourceforge.net/projects/wxwindows/files/2.9.5/
+ wget https://iftools.com/download/ctb/0.16/libctb-0.16.tar.gz
+ git svn clone https://svn.code.sf.net/p/freetel/code/codec2-dev
+ git svn clone https://svn.code.sf.net/p/freetel/code/fdmdv2
+ cd codec2-dev && git archive --format=tar --prefix=codec2-dev-0.1328/ HEAD | gzip > ../fdmdv2_0.96.5.1328.orig-codec2.tar.gz 
+ cd fdmdv2 && git archive --format=tar --prefix=fdmdv2-0.96.5.1328/ HEAD | gzip > ../fdmdv2_0.96.5.1328.orig.tar.gz
+Comment:
+ Packages of versions 0.91, 0.96 by A. Maitland Bottoms <bottoms at debian.org>
+ for experimental packages targeted at Debian Wheezy.
+ Includes convenience copies of wxWidgets-2.9.5, libctb-0.16,
+ and codec2-dev until such dependencies are in a stable release.
+ .
+ The fdmdv2_0.96.5-1328.orig-wxwidgets.tar.bz2 file is repackaged
+ from the wxwidgets.org version similar to the Debian wxwidgwts2.8
+ version: removal of unecessary convienince copies of libraries,
+ rm -rf src/expat src/iodbc src/jpeg src/png src/tiff src/zlib
+ .
+ Make use of multiple source tarballs and Debian's 3.0 (quilt)
+ source package format.
+ .
+ FreeDV Specification by Mel Whitten, K0PFX, and David Rowe, VK5DGR
+ http://freedv.org/tiki-index.php?page=FreeDV+Specification
+ .
+ Upstream Authors: 
+	David Rowe VK5DGR <david at rowetel.com>
+	Dave Witten <wittend at wwrinc.com>
+	Richard Shaw 
+ .
+ See the credits.txt file for a more complete list of contributors.
+Copyright: 2001-2012 Free Software Foundation, Inc.
+License: LGPL-2.1
+
+Files: codec2/*
+Copyright: (C) 1990-2013 David Rowe
+License: LGPL-2.1
+
+Files: */CMakeLists.txt
+Copyright: 2013 Richard Shaw
+Comment: CMake build system files
+License: LGPL-2.1
+
+Files: debian/*
+Copyright: 2013 A. Maitland Bottoms <bottoms at debian.org>
+License: LGPL-2.1
+
+Files: libctb/*
+Copyright: Copyright (C) 1999-2010 Joachim Buermann (jbuermann at iftools.com)
+License:
+ ctb is free software; you can redistribute it and/or modify it under
+ the term of the GNU Library General Public Licence as published by the
+ Free Software Foundation.
+ .
+ This library is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public Licence for more details
+ .
+ EXCEPTION NOTICE
+ As a special exception, you may use, copy, link, modify and distribute
+ under the user's own terms, binary object code versions of works based
+ on the library.
+ .
+ On Debian systems, the complete text of the GNU Library General Public
+ License (LGPL) version 2 can be found in the file
+ '/usr/share/common-licenses/LGPL-2'.
+
+
+Files: wxwidgets/*
+Copyright: 1992-2013 wxWidgets development team
+ Julian Smart, Robert Roebling, Vaclav Slavik, Guilhem Lavaux, et al.
+License: WX
+
+Files: Makefile.am Makefile.in aclocal.m4 configure*
+Copyright: 1996-2011 Free Software Foundation, Inc.
+Comment: Automake, autotools libtool files
+License: 
+ This file is free software; the Free Software Foundation
+ gives unlimited permission to copy and/or distribute it,
+ with or without modifications, as long as this notice is preserved.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+ even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ PARTICULAR PURPOSE.
+
+
+License: LGPL-2.1
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 2.1, as
+ published by the Free Software Foundation.  This program is
+ distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+ License for more details.
+ .
+ On Debian systems, the complete text of the GNU Lesser General Public
+ License (LGPL) version 2.1 can be found in the file 
+ '/usr/share/common-licenses/LGPL-2.1'.
+
+
+License: WX
+ wxWidgets is currently licensed under the "wxWindows Licence" pending
+ approval of the "wxWidgets Licence" which will be identical apart
+ from the name.
+ .
+ The wxWindows Licence is essentially the L-GPL (Library General
+ Public Licence), with an exception stating that derived works in
+ binary form may be distributed on the user's own terms. This is a
+ solution that satisfies those who wish to produce GPL'ed software
+ using wxWidgets, and also those producing proprietary software.
+ .
+ http://www.wxwidgets.org/about/newlicen.htm
+ .
+ Note for Debian users:
+ ======================
+ .
+ Most of the core wxWidgets library is licensed under the wxWindows Library
+ Licence (included below), however some additional features of the library
+ may include source licensed under terms which do not include the exception
+ permitting you to licence binary object code versions of works based on the
+ Library under terms of your own choice.  At any time and without warning,
+ newer versions of the Debian binary packages may include such code.
+ .
+ In short, if you plan to license apps built against these debs under terms
+ compatible with the GPL or LGPL, then you have nothing to worry about.  If
+ you wish to release your code under a licence which does not grant all of
+ the same rights as the LGPL would assert but would be permitted under the
+ terms of the exception, then you are strongly advised to either check the
+ licensing terms of all components that these debs (and all future versions
+ that you use) are built with, or build your own binaries of wxWidgets which
+ include only such code as is definitely covered by the exception.
+ .
+ You should presume that these debs will fall under the provisions of the
+ unmodified LGPL unless you can prove otherwise, however this note in no way
+ alters the actual terms of the authoritative licence detailed below, it is
+ intended to be purely informative of the fact that the Debian binary packages
+ will be built primarily with features useful to Free Software developers and
+ may not be suitable "as is" for compiling software for distribution that is
+ licensed incompatibly with the LGPL.  See /usr/share/common-licenses for
+ the full text of the LGPL.
+ .
+ Modifications and additions to the Library itself are encouraged to be
+ placed under the wxWindows Library Licence.  We hope you find it useful.
+ .
+ Preamble
+ ========
+ .
+ The licensing of the wxWidgets library is intended to protect the wxWidgets
+ library, its developers, and its users, so that the considerable investment
+ it represents is not abused.
+ .
+ Under the terms of the wxWindows licence, you as a user are not
+ obliged to distribute wxWidgets source code with your products, if you
+ distribute these products in binary form. However, you are prevented from
+ restricting use of the library in source code form, or denying others the
+ rights to use or distribute wxWidgets library source code in the way
+ intended.
+ .
+ The wxWindows licence establishes the copyright for the code and related
+ material, and it gives you legal permission to copy, distribute and/or
+ modify the library. It also asserts that no warranty is given by the authors
+ for this or derived code.
+ .
+ The core distribution of the wxWidgets library contains files
+ under two different licences:
+ .
+  Most files are distributed under the GNU Library General Public
+  Licence, version 2, with the special exception that you may create and
+  distribute object code versions built from the source code or modified
+  versions of it (even if these modified versions include code under a
+  different licence), and distribute such binaries under your own
+  terms.
+ .
+  Most core wxWidgets manuals are made available under the "wxWidgets
+  Free Documentation Licence", which allows you to distribute modified
+  versions of the manuals, such as versions documenting any modifications
+  made by you in your version of the library. However, you may not restrict
+  any third party from reincorporating your changes into the original
+  manuals.
+ .
+ Other relevant files:
+ .
+  licence.txt: a statement that the wxWidgets library is
+  covered by the GNU Library General Public Licence, with an
+  exception notice for binary distribution.
+ .
+  licendoc.txt: the wxWidgets Documentation Licence.
+ .
+  lgpl.txt: the text of the GNU Library General Public Licence.
+ .
+  gpl.txt: the text of the GNU General Public Licence, which is
+  referenced by the LGPL.
+ .
+                wxWindows Library Licence, Version 3.1
+                ======================================
+ .
+  Copyright (c) 1998-2005 Julian Smart, Robert Roebling et al
+ .
+  Everyone is permitted to copy and distribute verbatim copies
+  of this licence document, but changing it is not allowed.
+ .
+                       WXWINDOWS LIBRARY LICENCE
+     TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+ .
+  This library is free software; you can redistribute it and/or modify it
+  under the terms of the GNU Library General Public Licence as published by
+  the Free Software Foundation; either version 2 of the Licence, or (at
+  your option) any later version.
+ . 
+  This library is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library
+  General Public Licence for more details.
+ .
+  You should have received a copy of the GNU Library General Public Licence
+  along with this software, usually in a file named COPYING.LIB.  If not,
+  write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+  Boston, MA 02110-1301 USA.
+ .
+  EXCEPTION NOTICE
+ .
+  1. As a special exception, the copyright holders of this library give
+  permission for additional uses of the text contained in this release of
+  the library as licenced under the wxWindows Library Licence, applying
+  either version 3.1 of the Licence, or (at your option) any later version of
+  the Licence as published by the copyright holders of version
+  3.1 of the Licence document.
+ .
+  2. The exception is that you may use, copy, link, modify and distribute
+  under your own terms, binary object code versions of works based
+  on the Library.
+ .
+  3. If you copy code from files distributed under the terms of the GNU
+  General Public Licence or the GNU Library General Public Licence into a
+  copy of this library, as this licence permits, the exception does not
+  apply to the code that you add in this way.  To avoid misleading anyone as
+  to the status of such modified files, you must delete this exception
+  notice from such code and/or adjust the licensing conditions notice
+  accordingly.
+ .
+  4. If you write modifications of your own for this library, it is your
+  choice whether to permit this exception to apply to your modifications. 
+  If you do not wish that, you must delete the exception notice from such
+  code and/or adjust the licensing conditions notice accordingly.
+ .
+                wxWindows Free Documentation Licence, Version 3
+                ===============================================
+ .
+  Copyright (c) 1998 Julian Smart, Robert Roebling et al
+ .
+  Everyone is permitted to copy and distribute verbatim copies
+  of this licence document, but changing it is not allowed.
+ .
+                   WXWINDOWS FREE DOCUMENTATION LICENCE
+     TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+ .
+  1. Permission is granted to make and distribute verbatim copies of this
+  manual or piece of documentation provided any copyright notice and this
+  permission notice are preserved on all copies.
+ .
+  2. Permission is granted to process this file or document through a
+  document processing system and, at your option and the option of any third
+  party, print the results, provided a printed document carries a copying
+  permission notice identical to this one.
+ .
+  3. Permission is granted to copy and distribute modified versions of this
+  manual or piece of documentation under the conditions for verbatim
+  copying, provided also that any sections describing licensing conditions
+  for this manual, such as, in particular, the GNU General Public Licence,
+  the GNU Library General Public Licence, and any wxWindows Licence are
+  included exactly as in the original, and provided that the entire
+  resulting derived work is distributed under the terms of a permission
+  notice identical to this one.
+ .
+  4. Permission is granted to copy and distribute translations of this
+  manual or piece of documentation into another language, under the above
+  conditions for modified versions, except that sections related to
+  licensing, including this paragraph, may also be included in translations
+  approved by the copyright holders of the respective licence documents in
+  addition to the original English.
+ .
+                            WARRANTY DISCLAIMER
+ .
+  5. BECAUSE THIS MANUAL OR PIECE OF DOCUMENTATION IS LICENSED FREE OF CHARGE,
+  THERE IS NO WARRANTY FOR IT, TO THE EXTENT PERMITTED BY APPLICABLE LAW. 
+  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER
+  PARTIES PROVIDE THIS MANUAL OR PIECE OF DOCUMENTATION "AS IS" WITHOUT
+  WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
+  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+  PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF
+  THE MANUAL OR PIECE OF DOCUMENTATION IS WITH YOU.  SHOULD THE MANUAL OR
+  PIECE OF DOCUMENTATION PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
+  NECESSARY SERVICING, REPAIR OR CORRECTION.
+ .
+  6. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
+  ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+  REDISTRIBUTE THE MANUAL OR PIECE OF DOCUMENTATION AS PERMITTED ABOVE, BE
+  LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+  CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+  MANUAL OR PIECE OF DOCUMENTATION (INCLUDING BUT NOT LIMITED TO LOSS OF
+  DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+  PARTIES OR A FAILURE OF A PROGRAM BASED ON THE MANUAL OR PIECE OF
+  DOCUMENTATION TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
+  OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
diff --git a/debian/freedv.1 b/debian/freedv.1
new file mode 100644
index 0000000..fea700b
--- /dev/null
+++ b/debian/freedv.1
@@ -0,0 +1,91 @@
+.TH FREEDV "1" "December 2012" "fdmdv2 0.91" "User Commands"
+.SH NAME
+freedv \- Digital Voice for HF
+.SH DESCRIPTION
+FreeDV is a GUI application that allows any SSB radio to be used for
+low bit rate digital voice.
+.PP
+Speech is compressed down to 1400 bit/s then modulated onto a 1100 Hz
+wide QPSK signal which is sent to the Mic input of a SSB radio. On
+receive, the signal is received by the SSB radio, then demodulated and
+decoded by FreeDV.
+.PP
+FreeDV was built by an international team of Radio Amateurs working
+together on coding, design, user interface and testing. FreeDV is open
+source software, released under the GNU Public License version
+2.1. The FDMDV modem and Codec 2 Speech codec used in FreeDV are also
+open source.
+.PP
+.SH New Upgrade as of March 2013
+The new version 0.96 provides a 1600 bit\-per\-second mode that
+communicates at much lower signal levels than
+previously. Communications should be readable down to 2 dB SNR, and
+long distance contacts are reported using 1 to 2 watts power. A
+compatibility mode for communication with the older 0.91 version is
+included.
+.PP
+.SH Why FreeDV?
+Amateur Radio is transitioning from analog to digital, much as it
+transitioned from AM to SSB in the 1950s and 1960s. How would you
+feel if one or two companies owned the patents for SSB, then forced
+you to use their technology, made it illegal to experiment with or
+even understand the technology, and insisted you stay locked to it for
+the next 100 years?? That is exactly what was happening with digital
+voice. But now, hams are in control of their technology again.
+.PP
+FreeDV is unique as it uses 100 percent Open Source Software, including the
+audio codec. No secrets, nothing proprietary\! FreeDV represents a path
+for 21st century Amateur Radio where Hams are free to experiment and
+innovate, rather than a future locked into a single manufacturers
+closed technology.
+.PP
+.SH Demo Video
+Watch this video of a FreeDV QSO.
+.PP
+http://freedv.org/tiki-index.php?page=video
+.PP
+Here is what you need:
+.PP
+    A SSB receiver or transceiver
+    FreeDV software
+    A computer with one (receive only) or two sound cards.
+    Cables to connect your computer to your SSB radio. 
+.PP
+.SH Test your Transmitter Frequency Response
+When you play this 10 second 1 kHz to 2 kHz sweep .wav file(external
+link) through your transmitter, the power level should remain
+constant. If not, look for filtering and processing to turn off.
+.PP
+.SH Connecting Your Radio
+If you are lucky enough to have a "9600" input and output on your
+radio, this is the best connection for every digital mode, even 1200
+packet, and your audio box should be configured for 9600 or "no
+pre-emphasis/de-emphasis" if it has that setting. If the radio's
+configuration menu has a 1200/9600 setting, leave it permanently on
+9600.
+.PP
+The "9600" and "1200" settings are misnamed. "9600" should really be
+called "direct connection", and "1200" should be called
+"processed". The audio processing in your radio does not help any
+digital mode.
+.PP
+.SH Configuring Your Radio
+Turn off as much processing as possible. In general noise blankers,
+DSP band limit filtering, and narrow bandpass filters are likely to
+hurt rather than help. Compression, DSP noise and carrier elimination,
+and voice processing are definitely wrong for Digital modes. FreeDV's
+FDM modem does its own DSP, and in general this is true for other
+digital programs as well. The only things that we would expect to hurt
+the signal are intrusion of the opposite sideband, images of
+out-of-passband signals, and intermodulation distortion. You can see
+the effect of different settings in the S/N display of FreeDV.
+.PP
+Drive your transmitter and amplifier so that it emits 10%% to 20%% of
+its rated power continuously. There is a 12 dB peak\-to\-average power
+ratio in the FDM modem, and peak clipping in your amplifier will
+reduce the received S/N. Modern transmitters and amplifiers are only
+as linear, and only have as much headroom, as is necessary for voice
+SSB. Ask manufacturers and reviewers to start rating linearity and
+headroom for digital modes.
+.SH "SEE ALSO"
+http://freedv.org/
diff --git a/debian/freedv.manpages b/debian/freedv.manpages
new file mode 100644
index 0000000..03aa153
--- /dev/null
+++ b/debian/freedv.manpages
@@ -0,0 +1 @@
+debian/freedv.1
diff --git a/debian/patches/HID-PTT b/debian/patches/HID-PTT
new file mode 100644
index 0000000..531079c
--- /dev/null
+++ b/debian/patches/HID-PTT
@@ -0,0 +1,341 @@
+--- a/src/fdmdv2_main.h
++++ b/src/fdmdv2_main.h
+@@ -49,6 +49,15 @@
+ #include <wx/listbox.h>
+ #include <wx/textdlg.h>
+ 
++#define HAVE_LINUX_HIDRAW_H
++#ifdef HAVE_LINUX_HIDRAW_H
++#include <linux/hidraw.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <sys/ioctl.h>
++#include <fcntl.h>
++#endif
++
+ #include <samplerate.h>
+ 
+ #include <hamlib.h> 
+@@ -147,6 +156,9 @@
+ 
+         bool                m_boolUseSerialPTT;
+         wxString            m_strRigCtrlPort;
++        wxString            m_strRigHidPort;
++        wxString            m_strRigHidBit;
++	bool                m_boolUseHIDPTT;
+         bool                m_boolUseRTS;
+         bool                m_boolRTSPos;
+         bool                m_boolUseDTR;
+@@ -335,6 +347,9 @@
+         txRxThread*             m_txRxThread;
+ 
+         bool                    OpenHamlibRig();
++	void                    HIDPTT(int pushed);
++	void                    SetupHIDPort(void);
++	void                    CloseHIDPort(void);
+         void                    SetupSerialPort(void);
+         void                    CloseSerialPort(void);
+         void                    SerialPTTRx(void);
+@@ -377,6 +392,8 @@
+ 
+         ctb::IOBase*            m_device;
+         ctb::SerialPort*        m_serialPort;
++	int                     m_hidPort;
++	char                    m_hidGPIO;
+ 
+         void setsnrBeta(bool snrSlow);
+ 
+--- a/src/dlg_ptt.h
++++ b/src/dlg_ptt.h
+@@ -49,6 +49,13 @@
+     protected:
+         wxCheckBox* m_ckHalfDuplex;
+ 
++        /* HID PTT settings.*/
++
++	wxCheckBox* m_ckUseHIDPTT;
++	wxListBox* m_listHidPorts;
++	wxTextCtrl *m_txtHidDevicePath;
++	wxTextCtrl *m_txtHidDeviceBit;
++
+         /* Hamlib settings.*/
+ 
+         wxCheckBox *m_ckUseHamlibPTT;
+@@ -79,6 +86,7 @@
+         void populatePortList();
+ 
+         void PTTUseHamLibClicked(wxCommandEvent& event);
++        void PTTUseHIDClicked(wxCommandEvent& event);
+         void PTTUseSerialClicked(wxCommandEvent& event);
+ 
+         void OnOK(wxCommandEvent& event);
+--- a/src/dlg_ptt.cpp
++++ b/src/dlg_ptt.cpp
+@@ -49,6 +49,42 @@
+     mainSizer->Add(staticBoxSizer28, 0, wxEXPAND, 5);
+ 
+     //----------------------------------------------------------------------
++    // HID PTT
++    //----------------------------------------------------------------------
++
++    wxStaticBoxSizer* staticBoxSizerHID = new wxStaticBoxSizer( new wxStaticBox(this, wxID_ANY, _("HID PTT Settings")), wxVERTICAL);
++
++    wxBoxSizer* gridSizerHID = new wxBoxSizer(wxHORIZONTAL);
++
++    /* Use HID PTT checkbox. */
++    m_ckUseHIDPTT = new wxCheckBox(this, wxID_ANY, _("Use HID PTT"), wxDefaultPosition, wxDefaultSize, 0);
++    m_ckUseHIDPTT->SetValue(false);
++    gridSizerHID->Add(m_ckUseHIDPTT, 0, wxALIGN_CENTER_VERTICAL, 2);
++
++    /* HID device path listbox. */
++    //wxArrayString m_listHidPortsArr;
++    gridSizerHID->Add(new wxStaticText(this, wxID_ANY, _("Device (/dev/hidraw? :"), wxDefaultPosition, wxDefaultSize, 0),
++                      0, wxALIGN_CENTER_VERTICAL | wxLEFT, 2);
++    //m_listHidPorts = new wxListBox(this, wxID_ANY, wxDefaultPosition, wxSize(250, -1), m_listHidPortsArr, wxLB_SINGLE | wxLB_SORT);
++    //gridSizerHID->Add(m_listHidPorts, 1, wxALIGN_CENTER_VERTICAL, 0);
++
++    m_txtHidDevicePath = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(140,-1), 0);
++    gridSizerHID->Add(m_txtHidDevicePath, 1, wxEXPAND|wxALIGN_CENTER|wxALIGN_RIGHT, 2);
++
++    /* HID GPIO selector. */
++    wxArrayString m_listHidGPIOArr;
++    wxListBox *listHIDGPIO;
++    gridSizerHID->Add(new wxStaticText(this, wxID_ANY, _("GPIO PIN # :"), wxDefaultPosition, wxDefaultSize, 0),
++                      0, wxALIGN_CENTER_VERTICAL | wxLEFT, 0);
++    // listHIDGPIO = new wxListBox(this, wxID_ANY, wxDefaultPosition, wxSize(-1, -1), m_listHidGPIOArr, wxLB_SINGLE | wxLB_SORT);
++    // gridSizerHID->Add(listHIDGPIO, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 0);
++    m_txtHidDeviceBit = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(20,-1), 0);
++    gridSizerHID->Add(m_txtHidDeviceBit, 1, wxEXPAND|wxALIGN_CENTER|wxALIGN_RIGHT, 2);
++
++    staticBoxSizerHID->Add(gridSizerHID, 0);
++    mainSizer->Add(staticBoxSizerHID, 1);
++
++    //----------------------------------------------------------------------
+     // Hamlib for CAT PTT
+     //----------------------------------------------------------------------
+ 
+@@ -62,7 +98,7 @@
+     gridSizer100->Add(m_ckUseHamlibPTT, 0, wxALIGN_CENTER_VERTICAL, 0);
+ 
+     /* Hamlib Rig Type combobox. */
+-    gridSizer100->Add(new wxStaticText(this, wxID_ANY, _("Rig Model:"), wxDefaultPosition, wxDefaultSize, 0), 
++   gridSizer100->Add(new wxStaticText(this, wxID_ANY, _("Rig Model:"), wxDefaultPosition, wxDefaultSize, 0),
+                       0, wxALIGN_CENTER_VERTICAL | wxLEFT, 20);
+     m_cbRigName = new wxComboBox(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(250, -1), 0, NULL, wxCB_DROPDOWN);
+     /* TODO(Joel): this is a hack. At the least, need to gurantee that m_hamLib
+@@ -175,6 +211,7 @@
+     // Connect events
+     this->Connect(wxEVT_INIT_DIALOG, wxInitDialogEventHandler(ComPortsDlg::OnInitDialog), NULL, this);
+     m_ckUseHamlibPTT->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(ComPortsDlg::PTTUseHamLibClicked), NULL, this);
++    m_ckUseHIDPTT->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(ComPortsDlg::PTTUseHIDClicked), NULL, this);
+     m_ckUseSerialPTT->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(ComPortsDlg::PTTUseSerialClicked), NULL, this);
+     m_buttonOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(ComPortsDlg::OnOK), NULL, this);
+     m_buttonCancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(ComPortsDlg::OnCancel), NULL, this);
+@@ -189,6 +226,7 @@
+     // Disconnect Events
+     this->Disconnect(wxEVT_INIT_DIALOG, wxInitDialogEventHandler(ComPortsDlg::OnInitDialog), NULL, this);
+     m_ckUseHamlibPTT->Disconnect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(ComPortsDlg::PTTUseHamLibClicked), NULL, this);
++    m_ckUseHIDPTT->Disconnect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(ComPortsDlg::PTTUseHIDClicked), NULL, this);
+     m_ckUseSerialPTT->Disconnect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(ComPortsDlg::PTTUseSerialClicked), NULL, this);
+     m_buttonOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(ComPortsDlg::OnOK), NULL, this);
+     m_buttonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(ComPortsDlg::OnCancel), NULL, this);
+@@ -274,7 +312,7 @@
+ void ComPortsDlg::ExchangeData(int inout)
+ {
+     wxConfigBase *pConfig = wxConfigBase::Get();
+-    wxString str;
++    wxString str,hidstr,hidbit;
+     
+     if(inout == EXCHANGE_DATA_IN)
+     {
+@@ -284,13 +322,21 @@
+         m_cbRigName->SetSelection(wxGetApp().m_intHamlibRig);
+         m_cbSerialPort->SetValue(wxGetApp().m_strHamlibSerialPort);
+ 
++        m_ckUseHIDPTT->SetValue(wxGetApp().m_boolUseHIDPTT);
++        hidstr = wxGetApp().m_strRigHidPort;
++        hidbit = wxGetApp().m_strRigHidBit;
++
+         m_ckUseSerialPTT->SetValue(wxGetApp().m_boolUseSerialPTT);
+         str = wxGetApp().m_strRigCtrlPort;
+ #ifdef __WXMSW__
+         m_listCtrlPorts->SetStringSelection(str);
++        m_listHidPorts->SetStringSelection(hidstr);
++        m_listHidBit->SetStringSelection(hidbit);
+ #endif
+ #ifdef __WXGTK__
+         m_txtCtlDevicePath->SetValue(str);
++        m_txtHidDevicePath->SetValue(hidstr);
++        m_txtHidDeviceBit->SetValue(hidbit);
+ #endif
+         m_rbUseRTS->SetValue(wxGetApp().m_boolUseRTS);
+         m_ckRTSPos->SetValue(wxGetApp().m_boolRTSPos);
+@@ -312,6 +358,21 @@
+         pConfig->Write(wxT("/Hamlib/RigName"), wxGetApp().m_intHamlibRig);
+         pConfig->Write(wxT("/Hamlib/SerialPort"), wxGetApp().m_strHamlibSerialPort);
+ 
++        /* HID PTT settings. */
++
++        wxGetApp().m_boolUseHIDPTT = m_ckUseHIDPTT->IsChecked();
++#ifdef __WXMSW__
++        wxGetApp().m_strRigHidPort = m_listHidPorts->GetStringSelection();
++        wxGetApp().m_strRigHidBit  = m_listHidPorts->GetStringSelection();
++#endif
++#ifdef __WXGTK__
++        wxGetApp().m_strRigHidPort             = m_txtHidDevicePath->GetValue();
++        wxGetApp().m_strRigHidBit             = m_txtHidDeviceBit->GetValue();
++#endif
++        pConfig->Write(wxT("/Rig/UseHIDPTT"),    wxGetApp().m_boolUseHIDPTT);
++        pConfig->Write(wxT("/Rig/HIDPort"),    wxGetApp().m_strRigHidPort);
++        pConfig->Write(wxT("/Rig/HIDBit"),    wxGetApp().m_strRigHidBit);
++
+         /* Serial settings */
+ 
+         wxGetApp().m_boolUseSerialPTT           = m_ckUseSerialPTT->IsChecked();
+@@ -347,6 +408,13 @@
+ }
+ 
+ //-------------------------------------------------------------------------
++// PTTUseHIDClicked()
++//-------------------------------------------------------------------------
++void ComPortsDlg::PTTUseHIDClicked(wxCommandEvent& event)
++{
++}
++
++//-------------------------------------------------------------------------
+ // PTTUseSerialClicked()
+ //-------------------------------------------------------------------------
+ void ComPortsDlg::PTTUseSerialClicked(wxCommandEvent& event)
+--- a/src/fdmdv2_main.cpp
++++ b/src/fdmdv2_main.cpp
+@@ -317,6 +317,10 @@
+     wxGetApp().m_intHamlibRig = pConfig->ReadLong("/Hamlib/RigName", 0);
+     wxGetApp().m_strHamlibSerialPort = pConfig->Read("/Hamlib/SerialPort", "");
+     
++    wxGetApp().m_boolUseHIDPTT      = pConfig->ReadBool(wxT("/Rig/UseHIDPTT"), false);
++    wxGetApp().m_strRigHidPort      = pConfig->Read(wxT("/Rig/HIDPort"), wxT(""));
++    wxGetApp().m_strRigHidBit      = pConfig->Read(wxT("/Rig/HIDBit"), wxT(""));
++
+     wxGetApp().m_boolUseSerialPTT   = pConfig->ReadBool(wxT("/Rig/UseSerialPTT"),   false);
+     wxGetApp().m_strRigCtrlPort     = pConfig->Read(wxT("/Rig/Port"),               wxT(""));
+     wxGetApp().m_boolUseRTS         = pConfig->ReadBool(wxT("/Rig/UseRTS"),         true);
+@@ -994,6 +998,14 @@
+  
+     }
+ 
++    if(wxGetApp().m_boolUseHIDPTT && m_hidPort >= 0)
++    {
++        if(g_tx)
++	  HIDPTT(1);
++        else
++	  HIDPTT(0);
++    }
++
+     // reset level gauge
+ 
+     m_maxLevel = 0;
+@@ -1476,6 +1488,9 @@
+             OpenHamlibRig();
+             wxGetApp().m_hamlib->close();
+         }
++        if (wxGetApp().m_boolUseHIDPTT) {
++            SetupHIDPort();
++        }
+         if (wxGetApp().m_boolUseSerialPTT) {
+             SetupSerialPort();
+             CloseSerialPort();
+@@ -1751,6 +1766,9 @@
+             }
+         }
+ 
++        if (wxGetApp().m_boolUseHIDPTT)
++            CloseHIDPort();
++
+         if (wxGetApp().m_boolUseSerialPTT)
+             CloseSerialPort();
+ 
+@@ -3147,3 +3165,84 @@
+         }
+     }
+ }
++
++//----------------------------------------------------------------
++// HIDPTT(int pushed)
++//----------------------------------------------------------------
++void MainFrame::HIDPTT(int pushed)
++{
++#ifdef HAVE_LINUX_HIDRAW_H
++  if (m_hidPort>0) {
++    // Build two packets for CM108 HID.  One turns a GPIO bit on.  The other turns it off.
++    // Packet is 4 bytes, preceded by a 'report number' byte
++    // 0x00 report number
++    // Write data packet (from CM108 documentation)
++    // byte 0: 00xx xxxx     Write GPIO
++    // byte 1: xxxx dcba     GPIO3-0 output values (1=high)
++    // byte 2: xxxx dcba     GPIO3-0 data-direction register (1=output)
++    // byte 3: xxxx xxxx     SPDIF
++
++    char out_rep[] = {
++      0x00, // report number
++      // HID output report
++      0x00,
++      pushed ? (1 << m_hidGPIO) : 0, // set GPIO
++      1 << m_hidGPIO, // Data direction register (1=output)
++      0x00
++    };
++
++    // printf("HIDPTT: using gpio=%d\n", m_hidGPIO);
++    // printf("HIDPTT: ptt state=%d\n", pushed ? (1 << m_hidGPIO) : 0);
++    if (write(m_hidPort, out_rep, sizeof(out_rep)) < 0) {
++      printf("HIDPTT: CM108 write error\n");
++    }
++  }
++#endif
++}
++
++//----------------------------------------------------------------
++// SetupHIDPort()
++//----------------------------------------------------------------
++void MainFrame::SetupHIDPort(void)
++{
++#ifdef HAVE_LINUX_HIDRAW_H
++  struct hidraw_devinfo hiddevinfo;
++
++    if(!wxGetApp().m_strRigHidPort.IsEmpty())
++    {
++      m_hidGPIO = 0x0f & wxAtoi(wxGetApp().m_strRigHidBit);
++      m_hidPort = open(wxGetApp().m_strRigHidPort.c_str(),O_RDWR,0);
++      // 0x0d8c is the vendor id of CMedia USB sound devices that may have HID GPIO features
++      if ((m_hidPort >=0)&&(!ioctl(m_hidPort, HIDIOCGRAWINFO, &hiddevinfo) && hiddevinfo.vendor == 0x0d8c))
++        {
++            //  always start with PTT cleared
++	    HIDPTT(0);
++            //m_btnTogPTT->Enable(true);
++            m_btnTogPTT->SetValue(false);
++        }
++        else
++        {
++#endif
++            m_hidPort = -1;
++            m_hidGPIO = -1;
++            //m_btnTogPTT->Disable();
++#ifdef HAVE_LINUX_HIDRAW_H
++        }
++    }
++#endif
++}
++
++//----------------------------------------------------------------
++// CloseHIDPort()
++//----------------------------------------------------------------
++void MainFrame::CloseHIDPort(void)
++{
++    if(m_hidPort != 0)
++    {
++      close(m_hidPort);
++      m_hidPort = 0;
++      m_hidGPIO = -1;
++      //m_btnTogPTT->SetLabel(wxT("PTT"));
++      //m_btnTogPTT->Enable(false);
++    }
++}
diff --git a/debian/patches/Update-SVN-repository-URL.patch b/debian/patches/Update-SVN-repository-URL.patch
new file mode 100644
index 0000000..3923949
--- /dev/null
+++ b/debian/patches/Update-SVN-repository-URL.patch
@@ -0,0 +1,101 @@
+From: "A. Maitland Bottoms" <aa4hs at amrad.org>
+Date: Fri, 23 Aug 2013 21:27:43 -0400
+Subject: Update SVN repository URL
+
+Apparently sourceforge.net updated all URLs recently.
+---
+ README.Win32                                     |    2 +-
+ README.osx                                       |    2 +-
+ build/codelite/libPortCtrl/freedv_osx_port.patch |    2 +-
+ cmake/BuildCodec2.cmake                          |    2 +-
+ src/Makefile.linux                               |    2 +-
+ src/dlg_about.cpp   |    2 +-
+ src/fdmdv2_main.cpp |    2 +-
+ 7 files changed, 7 insertions(+), 7 deletions(-)
+
+--- a/README.Win32
++++ b/README.Win32
+@@ -63,7 +63,7 @@
+    I couldn't find an install command line that worked, so manually copied the libs and include files.
+ 
+ 9. Codec 2
+-   $ wget https://freetel.svn.sourceforge.net/svnroot/freetel/codec2-dev
++   $ wget https://svn.code.sf.net/p/freetel/code/codec2-dev
+    $ cd codec2-dev
+    $ ./configure && make
+ 
+--- a/README.osx
++++ b/README.osx
+@@ -196,7 +196,7 @@
+ +	cd $(CODEC2) && CPPFLAGS="-arch i386" LDFLAGS="-arch i386" ./configure && make && touch .built
+ +
+ +$(CODEC2):
+-+	svn co https://freetel.svn.sourceforge.net/svnroot/freetel/codec2-dev
+++	svn co https://svn.code.sf.net/p/freetel/code/codec2-dev
+ \ No newline at end of file
+ Index: src/Makefile.win32
+ ===================================================================
+--- a/src/Makefile.linux
++++ b/src/Makefile.linux
+@@ -167,7 +167,7 @@
+ 	cd $(CODEC2) && ./configure && make && touch .built
+ 
+ $(CODEC2):
+-	svn co https://freetel.svn.sourceforge.net/svnroot/freetel/codec2-dev
++	svn co https://svn.code.sf.net/p/freetel/code/codec2-dev
+         
+ # sox -------------------------------------------------------------
+ 
+--- a/src/dlg_about.cpp
++++ b/src/dlg_about.cpp
+@@ -134,7 +134,7 @@
+     wxString svnLatestRev("Can't determine latest SVN revision.");
+ 
+     // Try to determine current SVN revision from the Internet
+-    wxURL url(wxT("http://freetel.svn.sourceforge.net/svnroot/freetel/fdmdv2/"));
++    wxURL url(wxT("https://svn.code.sf.net/p/freetel/code/fdmdv2"));
+     
+     if(url.GetError() == wxURL_NOERR)
+     {
+@@ -148,7 +148,7 @@
+             in->Read(html_stream);
+             //wxLogDebug(htmldata);
+  
+-            wxString s("<h2>freetel - Revision ");
++            wxString s(wxT("<h2>p/freetel/code - Revision "));
+             int startIndex = htmldata.find(s) + s.Length();
+             int endIndex = htmldata.find(wxT(": /fdmdv2</h2>"));
+             svnLatestRev = wxT("Latest svn revision: ") + htmldata.SubString(startIndex, endIndex-1);
+--- a/src/fdmdv2_main.cpp
++++ b/src/fdmdv2_main.cpp
+@@ -1529,7 +1529,7 @@
+     wxString svnLatestRev("Can't determine latest SVN revision.");
+ 
+     // Try to determine current SVN revision from the Internet
+-    wxURL url(wxT("http://freetel.svn.sourceforge.net/svnroot/freetel/fdmdv2/"));
++    wxURL url(wxT("https://svn.code.sf.net/p/freetel/code/fdmdv2/"));
+ 
+     if(url.GetError() == wxURL_NOERR)
+     {
+@@ -1538,16 +1538,16 @@
+ 
+         if(in && in->IsOk())
+         {
+-            //printf("In OK\n");
++            printf("In OK\n");
+             wxStringOutputStream html_stream(&htmldata);
+             in->Read(html_stream);
+-            //wxLogDebug(htmldata);
++            wxLogDebug(htmldata);
+ 
+-            wxString s("<h2>freetel - Revision ");
++            wxString s("<h2>p/freetel/code - Revision ");
+             int startIndex = htmldata.find(s) + s.Length();
+-            int endIndex = htmldata.find(wxT(": /fdmdv2</h2>"));
++            int endIndex = htmldata.find(": /fdmdv2</h2>");
+             svnLatestRev = wxT("Latest svn revision: ") + htmldata.SubString(startIndex, endIndex-1);
+-            //printf("startIndex: %d endIndex: %d\n", startIndex, endIndex);
++            printf("startIndex: %d endIndex: %d\n", startIndex, endIndex);
+        }
+        delete in;
+     }
diff --git a/debian/patches/convenience-copies b/debian/patches/convenience-copies
new file mode 100644
index 0000000..8a036f6
--- /dev/null
+++ b/debian/patches/convenience-copies
@@ -0,0 +1,46 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -43,6 +43,8 @@
+ 
+ message(STATUS "FreeDV version: ${FREEDV_VERSION}")
+ 
++set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${CMAKE_SOURCE_DIR}/Build/usr/  ${CMAKE_SOURCE_DIR}/Build/  ${CMAKE_SOURCE_DIR}/libctb/ )
++
+ # Work around for not using a svn working copy.
+ set(SVN_REVISION "Unversioned directory" CACHE STRING
+     "Allow build environment to set revision.")
+@@ -407,21 +413,21 @@
+     message(STATUS "  libctb library: ${LIBCTB_LIBRARY}")
+     message(STATUS "  libctb headers: ${LIBCTB_INCLUDE_DIR}")
+     if(LIBCTB_LIBRARY AND LIBCTB_INCLUDE_DIR)
+-        set(CMAKE_REQUIRED_LIBRARIES ${LIBCTB_LIBRARY})
+-        if(NOT CMAKE_CROSSCOMPILING)
++#        set(CMAKE_REQUIRED_LIBRARIES ${LIBCTB_LIBRARY})
++#        if(NOT CMAKE_CROSSCOMPILING)
+             # Check to make sure linking with libctb works.
+-            include(CheckCXXSourceCompiles)
+-            check_cxx_source_compiles("
++#            include(CheckCXXSourceCompiles)
++#            check_cxx_source_compiles("
+                 #include <ctb-0.16/ctb.h>
+-                int main() {
+-                ctb::SerialPort*        m_serialPort;
+-                m_serialPort = new ctb::SerialPort();
+-                };"
+-                LIBCTB_LINKS)
+-            if(NOT LIBCTB_LINKS)
+-                message(FATAL_ERROR "Linking libctb failed.")
+-            endif(NOT LIBCTB_LINKS)
+-        endif(NOT CMAKE_CROSSCOMPILING)
++#                int main() {
++#                ctb::SerialPort*        m_serialPort;
++#                m_serialPort = new ctb::SerialPort();
++#                };"
++#                LIBCTB_LINKS)
++#            if(NOT LIBCTB_LINKS)
++#                message(FATAL_ERROR "Linking libctb failed.")
++#            endif(NOT LIBCTB_LINKS)
++#        endif(NOT CMAKE_CROSSCOMPILING)
+     else(LIBCTB_LIBRARY AND LIBCTB_INCLUDE_DIR)
+         message(FATAL_ERROR "libctb not found.
+ Linux:
diff --git a/debian/patches/convenience-copies.old b/debian/patches/convenience-copies.old
new file mode 100644
index 0000000..9a1d33f
--- /dev/null
+++ b/debian/patches/convenience-copies.old
@@ -0,0 +1,78 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -38,6 +38,8 @@
+ 
+ message(STATUS "FreeDV version: ${FREEDV_VERSION}")
+ 
++set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${CMAKE_SOURCE_DIR}/Build/usr/  ${CMAKE_SOURCE_DIR}/Build/  ${CMAKE_SOURCE_DIR}/libctb/ )
++
+ # Work around for not using a svn working copy.
+ set(SVN_REVISION "Unversioned directory" CACHE STRING
+     "Allow build environment to set revision.")
+@@ -72,7 +74,8 @@
+     set(USE_STATIC_WXWIDGETS TRUE CACHE BOOL
+     "Perform bootstrap build of wxWidgets, see README.cmake for more details.")
+ else(BOOTSTRAP_WXWIDGETS)
+-    set(USE_STATIC_WXWIDGETS FALSE CACHE BOOL
++    # Debian package handles bootstrap build of static wx-2.9
++    set(USE_STATIC_WXWIDGETS TRUE CACHE BOOL
+     "Perform bootstrap build of wxWidgets, see README.cmake for more details.")
+ endif(BOOTSTRAP_WXWIDGETS)
+ 
+@@ -338,8 +341,8 @@
+ set(WXCONFIG "" CACHE FILEPATH "Location of wx-config binary.")
+ set(WXRC "" CACHE FILEPATH "Location of wxrc binary.")
+ if(USE_STATIC_WXWIDGETS)
+-    set(WXCONFIG "${CMAKE_BINARY_DIR}/external/dist/bin/wx-config")
+-    set(WXRC "${CMAKE_BINARY_DIR}/external/dist/bin/wxrc")
++    #set(WXCONFIG "${CMAKE_BINARY_DIR}/external/dist/bin/wx-config")
++    #set(WXRC "${CMAKE_BINARY_DIR}/external/dist/bin/wxrc")
+     #set(wxWidgets_CONFIG_OPTIONS --linkdeps)
+     list(APPEND FREEDV_STATIC_DEPS wxWidgets)
+ endif(USE_STATIC_WXWIDGETS)
+@@ -369,6 +372,10 @@
+ endif()
+ if(wxWidgets_FOUND)
+     include("${wxWidgets_USE_FILE}")
++    # That has some lies, it thinks installed system paths not local. Debian package build needs:
++    include_directories(SYSTEM ${CMAKE_SOURCE_DIR}/Build/usr/include/wx-2.9/)
++    include_directories(${CMAKE_SOURCE_DIR}/Build/usr/lib/wx/include/gtk2-unicode-static-2.9/)
++    set(wxWidgets_LIBRARIES "-L../usr/lib;-pthread;;;-lwx_gtk2u-2.9;-pthread;-lgtk-x11-2.0;-lgdk-x11-2.0;-latk-1.0;-lgio-2.0;-lpangoft2-1.0;-lpangocairo-1.0;-lgdk_pixbuf-2.0;-lcairo;-lpango-1.0;-lfreetype;-lfontconfig;-lgobject-2.0;-lgthread-2.0;-lrt;-lglib-2.0;-lX11;-lSM;-lpng;-lz;-ljpeg;-ltiff;-lwxregexu-2.9;-lz;-ldl;-lm")
+     list(APPEND FREEDV_LINK_LIBS ${wxWidgets_LIBRARIES})
+ endif(wxWidgets_FOUND)
+ 
+@@ -408,21 +415,21 @@
+     message(STATUS "  libctb library: ${LIBCTB_LIBRARY}")
+     message(STATUS "  libctb headers: ${LIBCTB_INCLUDE_DIR}")
+     if(LIBCTB_LIBRARY AND LIBCTB_INCLUDE_DIR)
+-        set(CMAKE_REQUIRED_LIBRARIES ${LIBCTB_LIBRARY})
+-        if(NOT CMAKE_CROSSCOMPILING)
++#        set(CMAKE_REQUIRED_LIBRARIES ${LIBCTB_LIBRARY})
++#        if(NOT CMAKE_CROSSCOMPILING)
+             # Check to make sure linking with libctb works.
+-            include(CheckCXXSourceCompiles)
+-            check_cxx_source_compiles("
++#            include(CheckCXXSourceCompiles)
++#            check_cxx_source_compiles("
+                 #include <ctb-0.16/ctb.h>
+-                int main() {
+-                ctb::SerialPort*        m_serialPort;
+-                m_serialPort = new ctb::SerialPort();
+-                };"
+-                LIBCTB_LINKS)
+-            if(NOT LIBCTB_LINKS)
+-                message(FATAL_ERROR "Linking libctb failed.")
+-            endif(NOT LIBCTB_LINKS)
+-        endif(NOT CMAKE_CROSSCOMPILING)
++#                int main() {
++#                ctb::SerialPort*        m_serialPort;
++#                m_serialPort = new ctb::SerialPort();
++#                };"
++#                LIBCTB_LINKS)
++#            if(NOT LIBCTB_LINKS)
++#                message(FATAL_ERROR "Linking libctb failed.")
++#            endif(NOT LIBCTB_LINKS)
++#        endif(NOT CMAKE_CROSSCOMPILING)
+     else(LIBCTB_LIBRARY AND LIBCTB_INCLUDE_DIR)
+         message(FATAL_ERROR "libctb not found.
+ Linux:
diff --git a/debian/patches/debian-build-svn-version b/debian/patches/debian-build-svn-version
new file mode 100644
index 0000000..bca26d3
--- /dev/null
+++ b/debian/patches/debian-build-svn-version
@@ -0,0 +1,13 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -44,7 +44,9 @@
+ message(STATUS "FreeDV version: ${FREEDV_VERSION}")
+ 
+ # Work around for not using a svn working copy.
+-add_definitions(-DSVN_REVISION="Unversioned directory")
++set(SVN_REVISION "Unversioned directory" CACHE STRING
++    "Allow build environment to set revision.")
++add_definitions(-DSVN_REVISION=${SVN_REVISION})
+ add_definitions(-D_NO_AUTOTOOLS_)
+ 
+ 
diff --git a/debian/patches/debian-desktop b/debian/patches/debian-desktop
new file mode 100644
index 0000000..9d79f06
--- /dev/null
+++ b/debian/patches/debian-desktop
@@ -0,0 +1,14 @@
+--- a/contrib/freedv.desktop
++++ b/contrib/freedv.desktop
+@@ -1,8 +1,9 @@
+ [Desktop Entry]
+ Version=1.0
+ Name=FreeDV
+-Exec=freedv
++Comment=Digital Voice for HF
++Exec=/usr/bin/freedv
+ Icon=freedv
+ Type=Application
+ Terminal=false
+-Categories=GTK;GNOME;Utility;
++Categories=Utility;HamRadio
diff --git a/debian/patches/debug-stop-crash b/debian/patches/debug-stop-crash
new file mode 100644
index 0000000..a986df7
--- /dev/null
+++ b/debian/patches/debug-stop-crash
@@ -0,0 +1,9 @@
+--- a/src/hamlib.cpp
++++ b/src/hamlib.cpp
+@@ -110,5 +110,5 @@
+ void Hamlib::close(void) {
+     rig_close(m_rig);
+     rig_cleanup(m_rig);
+-    free(m_rig);
++    // CRASH free(m_rig);
+ }
diff --git a/debian/patches/fix-config-include b/debian/patches/fix-config-include
new file mode 100644
index 0000000..31a40ef
--- /dev/null
+++ b/debian/patches/fix-config-include
@@ -0,0 +1,11 @@
+--- a/src/fdmdv2_main.h
++++ b/src/fdmdv2_main.h
+@@ -24,7 +24,7 @@
+ 
+ #include "version.h"
+ #ifndef _NO_AUTOTOOLS_
+-#include "../config.h"
++#include "config.h"
+ #endif
+ #include <wx/wx.h>
+ 
diff --git a/debian/patches/link-with-libXxf86vm b/debian/patches/link-with-libXxf86vm
new file mode 100644
index 0000000..4114291
--- /dev/null
+++ b/debian/patches/link-with-libXxf86vm
@@ -0,0 +1,23 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -371,6 +371,12 @@
+ if(wxWidgets_FOUND)
+     include("${wxWidgets_USE_FILE}")
+     list(APPEND FREEDV_LINK_LIBS ${wxWidgets_LIBRARIES})
++    message(STATUS "Looking for libXxf86vm...")
++    find_library(Xxf86vm_LIBRARY Xxf86vm)
++    message(STATUS "Xxf86vm library: ${Xxf86vm_LIBRARY}")
++    if(Xxf86vm_LIBRARY)
++      list(APPEND FREEDV_LINK_LIBS ${Xxf86vm_LIBRARY})
++    endif(Xxf86vm_LIBRARY)
+ endif(wxWidgets_FOUND)
+ 
+ #
+@@ -439,7 +445,6 @@
+ include_directories(${LIBCTB_INCLUDE_DIR})
+ list(APPEND FREEDV_LINK_LIBS ${LIBCTB_LIBRARY})
+ 
+-
+ # Freedv 
+ add_subdirectory(src)
+ 
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..e79039b
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,8 @@
+Update-SVN-repository-URL.patch
+debian-build-svn-version
+debian-desktop
+fix-config-include
+convenience-copies
+debug-stop-crash
+HID-PTT
+link-with-libXxf86vm
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..80e7565
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,103 @@
+#!/usr/bin/make -f
+#DEB_BUILD_OPTIONS=nostrip
+#CFLAGS=-Wall -g
+#CXXFLAGS=-Wall -g
+DEB_DEBIAN_DIR=$(dir $(firstword $(MAKEFILE_LIST)))
+REV=$(shell dpkg-parsechangelog -l$(DEB_DEBIAN_DIR)/changelog \
+              | sed -rne 's,^Version: .*[+~]svn([0-9]+).*,\1,p')
+VER=$(shell dpkg-parsechangelog -l$(DEB_DEBIAN_DIR)/changelog \
+              | sed -rne 's,^Version: ([^-]+).*,\1,p')
+SVNREV=$(shell echo $(VER) | sed -rne 's,[0-9]+\.[0-9]+\.[0-9]+\.([0-9]+),\1,p')
+
+%:
+	dh $@ --builddir=Build --build-system=cmake
+
+# build local static libraries in configure step
+override_dh_auto_configure:
+	mkdir Build
+	mkdir Build/libctb
+	mkdir Build/lib
+	mkdir Build/wxwidgets
+	mkdir Build/codec2
+	dh_auto_configure --sourcedirectory=codec2 --builddirectory=Build/codec2 --buildsystem=cmake -- -DBUILD_SHARED_LIBS=OFF
+	dh_auto_configure --sourcedirectory=libctb/src --builddirectory=Build/libctb
+	cd Build/libctb && make -f ../../libctb/build/GNUmakefile VPATH=../../libctb/src CXXFLAGS=-I../../libctb/include
+	rm Build/lib/libctb-0.16.so
+	cd Build/codec2 && make
+	cd Build/codec2 && make install DESTDIR=$(CURDIR)/Build
+	dh_auto_configure --builddirectory=Build --buildsystem=cmake -- -DSVN_REVISION=\"$(SVNREV)\"
+
+override_dh_auto_install:
+	dh_auto_install
+	/usr/bin/install --mode=0644 -D contrib/freedv.desktop debian/freedv/usr/share/applications/freedv.desktop
+	for r in 48x48 64x64 128x128 256x256 ; do /usr/bin/install --mode=0644 -D contrib/freedv$$r.png debian/freedv/usr/share/icons/hicolor/$$r/apps/freedv.png ; done
+
+testvars:
+	echo DEB_DEBIAN_DIR $(DEB_DEBIAN_DIR)
+	echo SVNREV $(SVNREV)
+	echo VER: $(VER)
+
+fdmdv2-src: # remove cruft
+	rm -rf fdmdv2-$(VER)
+	svn -q export -r $(SVNREV) https://svn.code.sf.net/p/freetel/code/fdmdv2/ \
+          fdmdv2-$(VER)
+	rm -rf fdmdv2-$(VER)/conf # SVN cruft
+	rm -rf fdmdv2-$(VER)/hooks # SVN cruft
+	rm -rf fdmdv2-$(VER)/locks # SVN cruft
+	rm -rf fdmdv2-$(VER)/build # codelite cruft
+	rm -rf fdmdv2-$(VER)/db # SVN cruft
+	GZIP=--best tar -cz --owner root --group root --mode a+rX \
+         -f fdmdv2_$(VER).orig.tar.gz \
+         fdmdv2-$(VER)
+	rm -r fdmdv2-$(VER)
+
+codec2-dev-src: # remove binary data and cruft
+	rm -rf codec2
+	svn -q export -r $(SVNREV) https://svn.code.sf.net/p/freetel/code/codec2-dev/ \
+          codec2
+	rm -rf codec2/raw # Audio data
+	rm -rf codec2/stm32 # Maybe non-dfsg?
+	rm -rf codec2/wav # Audio data
+	rm -rf codec2/win32 # here be .dll files
+	GZIP=--best tar -cz --owner root --group root --mode a+rX \
+         -f fdmdv2_$(VER).orig-codec2.tar.gz \
+         codec2
+	rm -r codec2
+
+libctb-src: # remove binaries and Doxygen generated .pdf from source tarball
+	rm -rf libctb-0.16.tar.gz libctb-0.16.orig
+	wget https://iftools.com/download/ctb/0.16/libctb-0.16.tar.gz
+	tar zxf libctb-0.16.tar.gz
+	rm -f libctb-0.16/manual/refman.pdf # Doxygen generated pdf
+	rm -f libctb-0.16/build/libctb.bkl # XML document text
+	rm -f libctb-0.16/python/src/ctb.html # HTML data
+	rm -f libctb-0.16/python/src/linux/_wxctb.so # ELF 386
+	rm -f libctb-0.16/python/module/linux/_wxctb.so # ELF 386
+	rm -f libctb-0.16/lib/gpib32.lib # current ar archive
+
+	mv libctb-0.16 libctb
+	GZIP=--best tar -cz --owner root --group root --mode a+rX \
+         -f fdmdv2_$(VER).orig-libctb.tar.gz \
+         libctb
+	rm -r libctb
+
+wxwidgets-src: # remove convenience copies of libraries
+	rm -rf wxWidgets-2.9.5.tar.bz2 wxwidgets-2.9.5.orig
+	wget ftp://ftp.wxwidgets.org/pub/2.9.5/wxWidgets-2.9.5.tar.bz2
+	tar jxf wxWidgets-2.9.5.tar.bz2
+
+	rm -rf wxWidgets-2.9.5/src/expat
+	rm -rf wxWidgets-2.9.5/src/jpeg
+	rm -rf wxWidgets-2.9.5/src/png
+	rm -rf wxWidgets-2.9.5/src/tiff
+	rm -rf wxWidgets-2.9.5/src/zlib
+	rm wxWidgets-2.9.5/docs/doxygen/images/main_wxlogo.pdf
+
+	mv wxWidgets-2.9.5 wxwidgets-2.9.5.orig
+	tar -c --owner root --group root --mode a+rX \
+         -f fdmdv2_$(VER).orig-wxwidgets.tar \
+         wxwidgets-2.9.5.orig
+	bzip2 fdmdv2_$(VER).orig-wxwidgets.tar
+	rm -r wxwidgets-2.9.5.orig
+
+get-orig-source: fdmdv2-src codec2-dev-src libctb-src
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hamradio/freedv.git



More information about the pkg-hamradio-commits mailing list