Import kicad_4.0.5+dfsg1-4.debian.tar.xz
authorCarsten Schoenert <c.schoenert@t-online.de>
Wed, 25 Jan 2017 21:38:35 +0000 (21:38 +0000)
committerCarsten Schoenert <c.schoenert@t-online.de>
Wed, 25 Jan 2017 21:38:35 +0000 (21:38 +0000)
[dgit import tarball kicad 4.0.5+dfsg1-4 kicad_4.0.5+dfsg1-4.debian.tar.xz]

69 files changed:
README.source [new file with mode: 0644]
changelog [new file with mode: 0644]
clean_sourceless_pdf [new file with mode: 0755]
compat [new file with mode: 0644]
control [new file with mode: 0644]
copyright [new file with mode: 0644]
create_kicad_upstream_tarballs.sh [new file with mode: 0755]
gbp.conf [new file with mode: 0644]
kicad-common.install [new file with mode: 0644]
kicad-common.links [new file with mode: 0644]
kicad-common.lintian-overrides [new file with mode: 0644]
kicad-doc-ca.doc-base [new file with mode: 0644]
kicad-doc-ca.install [new file with mode: 0644]
kicad-doc-de.doc-base [new file with mode: 0644]
kicad-doc-de.install [new file with mode: 0644]
kicad-doc-en.doc-base [new file with mode: 0644]
kicad-doc-en.install [new file with mode: 0644]
kicad-doc-es.doc-base [new file with mode: 0644]
kicad-doc-es.install [new file with mode: 0644]
kicad-doc-fr.doc-base [new file with mode: 0644]
kicad-doc-fr.install [new file with mode: 0644]
kicad-doc-hu.install [new file with mode: 0644]
kicad-doc-it.doc-base [new file with mode: 0644]
kicad-doc-it.install [new file with mode: 0644]
kicad-doc-ja.doc-base [new file with mode: 0644]
kicad-doc-ja.install [new file with mode: 0644]
kicad-doc-nl.doc-base [new file with mode: 0644]
kicad-doc-nl.install [new file with mode: 0644]
kicad-doc-pl.doc-base [new file with mode: 0644]
kicad-doc-pl.install [new file with mode: 0644]
kicad-doc-pt.install [new file with mode: 0644]
kicad-doc-ru.doc-base [new file with mode: 0644]
kicad-doc-ru.install [new file with mode: 0644]
kicad-doc-zh-cn.install [new file with mode: 0644]
kicad.desktop [new file with mode: 0644]
kicad.install [new file with mode: 0644]
kicad.links [new file with mode: 0644]
kicad.lintian-overrides [new file with mode: 0644]
kicad.manpages [new file with mode: 0644]
man/bitmap2component.1 [new file with mode: 0644]
man/cvpcb.1 [new file with mode: 0644]
man/dxf2idf.1 [new file with mode: 0644]
man/eeschema.1 [new file with mode: 0644]
man/gerbview.1 [new file with mode: 0644]
man/idf2vrml.1 [new file with mode: 0644]
man/idfcyl.1 [new file with mode: 0644]
man/idfrect.1 [new file with mode: 0644]
man/kicad.1 [new file with mode: 0644]
man/pcb_calculator.1 [new file with mode: 0644]
man/pcbnew.1 [new file with mode: 0644]
man/pl_editor.1 [new file with mode: 0644]
patches/debian-hacks/Adding-needed-SVG-files-and-additinal-arrays.patch [new file with mode: 0644]
patches/debian-hacks/Remove-download-target-for-noAvhttp.patch [new file with mode: 0644]
patches/debian-hacks/Removing-hyphen-inside-KICAD_FULL_VERSION.patch [new file with mode: 0644]
patches/fixes/Add-missing-dependency-github_plugin-pcbcommon.patch [new file with mode: 0644]
patches/fixes/Fix-FTBFS-with-Boost-1.61.patch [new file with mode: 0644]
patches/fixes/Fix-issue-170-for-real.patch [new file with mode: 0644]
patches/fixes/Fixing-some-spelling-issues.patch [new file with mode: 0644]
patches/fixes/KiCadDocumentation.cmake-fix-install-target-for-HTML-docu.patch [new file with mode: 0644]
patches/fixes/Modifing-the-Exec-cmd-in-the-desktop-files.patch [new file with mode: 0644]
patches/fixes/Remove-unused-FindOpenSSL.cmake.patch [new file with mode: 0644]
patches/fixes/Replace-avhttp-with-libcurl.patch [new file with mode: 0644]
patches/fixes/Replace-the-avhttp-library-used-by-the-github-plugin-with.patch [new file with mode: 0644]
patches/porting-kfreebsd-hurd/Fix-FTBFS-on-kFreeBSD-and-Hurd.patch [new file with mode: 0644]
patches/reproducibility/add-field-revdate-to-asciidoc-files-of-documentation.patch [new file with mode: 0644]
patches/series [new file with mode: 0644]
rules [new file with mode: 0755]
source/format [new file with mode: 0644]
watch [new file with mode: 0644]

diff --git a/README.source b/README.source
new file mode 100644 (file)
index 0000000..114668c
--- /dev/null
@@ -0,0 +1,40 @@
+KiCad packaging workflow
+------------------------
+
+KiCad uses git-buildpackage for the packaging maintenance. This means the whole
+Debian specific work is done in separate branches. The needed Debian specific
+patches will be managed by a so called patch-queue branch if needed.
+
+The KiCad source used for packaging is split off into the main application and
+some additional add-ons like the documentation (upstream kicad-doc called), the
+localization (upstream kicad-i18n called) and the various libraries for
+schematic, footprints and the 3D modells (upstream uses various git
+repositories for those).
+
+We use component tarballs to collect all the sources. git-buildpackage is able
+to handle those files for importing into the git tree as also for extracting
+the correct component tarballs later if needed. For the recreation of the
+orig*.tar.xz pristine-tar is doing the correct action.
+
+The helper script debian/create_kicad_upstream_tarballs.sh will create all the
+tarballs if a new version is released. The script will create the following
+files in /tmp/kicad-tmp
+
+   kicad_<version>+dfsg<x>.orig.tar.xz
+   kicad_<version>+dfsg<x>.orig-doc.tar.xz
+   kicad_<version>+dfsg<x>.orig-i18n.tar.xz
+   kicad_<version>+dfsg<x>.orig-libraries.tar.xz
+
+Please call the script without any option or with option '-h' to see how the
+script should be called.
+The helper script will remove files that are not DFSG clean like sourceless PDF
+and SVG/CPP files without a DFSG compatible license.
+
+The multi tarballs will be extracted to the following folders while importing
+the new version:
+
+  *.orig-doc.tar.xz    ->  doc/
+  *.orig-i18n.tar.xz   ->  i18n/
+  *.orig-libraries.xz  ->  libraries/
+
+ -- Carsten Schönert <c.schoenert@t-online.de>, Wed, 21 Sep 2016 22:45:00 +0200
diff --git a/changelog b/changelog
new file mode 100644 (file)
index 0000000..76a10e3
--- /dev/null
+++ b/changelog
@@ -0,0 +1,559 @@
+kicad (4.0.5+dfsg1-4) unstable; urgency=medium
+
+  [ Carsten Schoenert ]
+  * [375ce2f] Revert "debian/control: decrease Architectures for arch packages"
+    + removing the arch specific decrease of the build architecture, it's
+      really not useful here (Thx Emilio & Aurelien)
+  * [b2c400d] kicad-common.lintian-overrides: ingoring Lintian
+    + kicad-common is now arch dependend, silence lintian here that is saying
+      kicad-common has only content that is indep but we relay on the python
+      package
+
+ -- Carsten Schoenert <c.schoenert@t-online.de>  Wed, 25 Jan 2017 22:38:35 +0100
+
+kicad (4.0.5+dfsg1-3) unstable; urgency=medium
+
+  [ Carsten Schoenert ]
+  * [1835f2e] debian/control: decrease Architectures for arch packages
+    + minimize the platform where kicad should be build, libboost-context-dev
+      isn't on all platforms available
+  * [4bd0315] manpages: adding missing manpages
+  * [d1b0883] debian/copyright: reflect last changes and updates
+
+ -- Carsten Schoenert <c.schoenert@t-online.de>  Fri, 20 Jan 2017 21:51:15 +0100
+
+kicad (4.0.5+dfsg1-2) unstable; urgency=medium
+
+  [ Carsten Schoenert ]
+  * [85bda23] kicad-common: make package arch-depended
+  * [e38bb91] debian/kicad.install: fix installation of man pages
+  * [1e3fc2e] override_dh_fixperms: adding mised call for dh_fixperms
+
+ -- Carsten Schoenert <c.schoenert@t-online.de>  Mon, 16 Jan 2017 18:56:50 +0100
+
+kicad (4.0.5+dfsg1-1) unstable; urgency=medium
+
+  [ Carsten Schoenert ]
+  * [cc405a8] debian/control: adding Vcs fields after creating git tree
+  * [a5b571d] rework helper script for source tarball creation
+  * [e0d8156] debian/kicad.lintian-overrides: be more flexible
+  * [f458b82] debian/rules: split dh_fixperms
+    (Closes: #847820)
+  * [dfd193b] New upstream version 4.0.5+dfsg1
+    (Closes: #851000)
+  * [47c248a] debian/rules: adjusting KICAD_FULL_VERSION
+  * [bb3ec74] rebuild patch queue from patch-queue branch
+  * [3d40398] kicad.install: re-adding the existing man pages
+  * [e0fdaa1] debian/control: split of B-D package asciidoc
+  * [774746f] debian/rules: remove build-arch specific target
+  * [3f5b978] debian/control: adding myself to the Uploaders
+
+ -- Carsten Schoenert <c.schoenert@t-online.de>  Sat, 14 Jan 2017 21:45:37 +0100
+
+kicad (4.0.4+dfsg2-1) unstable; urgency=medium
+
+  [ Carsten Schoenert ]
+  * [41a2fdb] create patch-queue branch from the existing patches
+  * [22b5df9] debian/gbp.conf: adding helper config for git-buildpackage
+  * [3ea2c1d] debian/get-kicad.sh: modify script to get recent versions
+  * [eebdef9] New upstream version 4.0.4+dfsg2
+  * [3691290] debian/README.source: adjust info about gbp workflow
+  * [706c203] debian/control: wrap and sort the entries
+  * [a8f2838] place desktop file in favour of a menu files
+  * [4f033cf] kicad-doc*: adopt the documentation packages
+  * [8d7dd1a] debian/copyright: adjust copyright information
+  * [8d417ff] kicad: using the debhelper sequencer file mechanism
+  * [38470c3] kicad-common: also using debhelper sequencer files
+  * [e4be662] debian/control: adding new helper for dh_python2 support
+  * [bb84cb9] debian/watch: adjusting watch URL and filemangle
+  * [522a99e] debian/rules: enabling cmake build with some overrides
+    (Closes: #833685)
+  * [32f83db] debian/kicad.lintian-overrides: some needed overrides
+  * [1ce57ed] rebuild patch queue from patch-queue branch
+  * [182cc1a] rebuild patch queue from patch-queue branch
+  * [5eb0382] kicad: enable the BUILD_GITHUB_PLUGIN (Closes: #820261)
+  * [a200091] debian/copyright: adopt changes due libcurl support
+  * [6e43839] debian/control: adding explicit python dep for kicad-common
+  * [b96a3b7] debian/control: set Multi-Arch: foreign also on Arch: all
+  * [6e15016] rebuild patch queue from patch-queue branch
+  * [a869507] fix some buildflag hardening issues
+  * [95bb23d] rebuild patch queue from patch-queue branch
+  * [bc820d2] debian/rules: adding date from changelog to the Asciidoc files
+
+ -- Georges Khaznadar <georgesk@debian.org>  Tue, 15 Nov 2016 09:20:38 +0100
+
+kicad (4.0.4+dfsg1-2) unstable; urgency=medium
+
+  * Removed the spurious dependency on libglew, which should be computed
+    automatically by debian helper scripts. Closes: #838536
+
+ -- Georges Khaznadar <georgesk@debian.org>  Fri, 30 Sep 2016 14:46:55 +0200
+
+kicad (4.0.4+dfsg1-1) unstable; urgency=medium
+
+  * checked that 4.0.2+dfsg1-2~bpo8+1-1 is available. Closes: #811268
+  * modified .install files to install kicad.mo files. Closes: #819855
+  * applied Graham Inggs' patch. Closes: #834246
+  * added a Recommends: for xsltproc. Closes: #826750
+  * updated Standards-Version to 3.9.8
+  * upgraded to the last upstream version. Closes: #833777
+  * added build-dependencies on texlive-lang-cyrillic and texlive-fonts-extra
+
+ -- Georges Khaznadar <georgesk@debian.org>  Wed, 11 May 2016 16:14:08 +0200
+
+kicad (4.0.2+dfsg1-4) unstable; urgency=medium
+
+  * added a dependency on python-wxgtk3.0. Closes: #816525
+
+ -- Georges Khaznadar <georgesk@debian.org>  Thu, 03 Mar 2016 10:34:37 +0100
+
+kicad (4.0.2+dfsg1-3) unstable; urgency=medium
+
+  * changed the last patch according to Steven Chamberlain's proposition.
+  * added a build-dependency on libpython-stdlib, which should not harm
+    for most architectures, and might be necessary on a few ones.
+  * removed the tee commands from the build routine
+
+ -- Georges Khaznadar <georgesk@debian.org>  Mon, 22 Feb 2016 17:19:10 +0100
+
+kicad (4.0.2+dfsg1-2) unstable; urgency=medium
+
+  * Added a default define: LIB_ENV_VAR = wxT("LD_LIBRARY_PATH").
+    Closes: #815247
+
+ -- Georges Khaznadar <georgesk@debian.org>  Sat, 20 Feb 2016 16:59:52 +0100
+
+kicad (4.0.2+dfsg1-1) unstable; urgency=medium
+
+  * removed the obsoleted file debian/get_newest_source.sh
+  * modified debian/get-kicad.sh to download data from i18n
+    repositories, and to get kicad's core with version number 4.0.2
+  * updated to version 2.0.2
+  * created a new Makefile to compile i18n PO files
+  * fixed a mistake in bitmaps_png/CMakeLists.txt's patch : no need to
+    patch that file since files with copyright issues were replaced.
+  * added a build-dependency on gettext
+
+ -- Georges Khaznadar <georgesk@debian.org>  Mon, 15 Feb 2016 15:15:34 +0100
+
+kicad (4.0.1+dfsg1-2) unstable; urgency=medium
+
+  * fixed the short package description for kicad-doc-de.
+    Closes: #813605
+  * added usr/lib/python2.7/dist-packages in d/kicad.install.
+    Closes: #813655
+
+ -- Georges Khaznadar <georgesk@debian.org>  Thu, 04 Feb 2016 09:35:29 +0100
+
+kicad (4.0.1+dfsg1-1) unstable; urgency=medium
+
+  * repacked the source tarball, to withdraw files with a wrong license
+    and the .cpp files which were generated from those sources.
+  * created a new script debian/get_newest_source.sh and a file
+    debian/watch to enjoy it.
+  * modified debian/get_newest_source.sh to notify files with wrong
+    licenses.
+  * replaced files find.svg and find_replace.svg which came with wrong
+    licenses, and compiled them into cpp files.
+  * updated the URL in debian/copyright for Poly2Tri
+  * added a build-dependency on python-dev
+  * fixed the dependency on libglew1.13|libglew1.10 which prenvented
+    the installation of kicad. Closes: #807082; Closes: #805115
+  * checked that the scripts provided by Alexandre Rebert cannot
+    crash kicad's binaries any longer. Closes:  #715686.
+    Closes:  #716091. Closes: #716557.
+  * checked that the script to get sources does not miss
+    'TO_SOT_Packages_SMD.pretty' neither 'TO_SOT_Packages_THT.pretty'.
+    Closes: #804614
+  * added a build-dependency on python-all
+  * modified debian/get-kicad.sh to upgrade to version 4.0.1
+  * upgraded to the new upstream version
+  * xsltproc is now invoked with --nonet; Closes: #807082
+  * verified that all .pretty files are dowloaded when the source
+    package is created. Closes: #804614
+  * added a dependency on libglew >= 1.10; Closes: #805115
+  * added compile definitions to build python scripting features,
+    as recommended at http://kicad-pcb.org/download/source/
+  * added a build-dependencies on python-wxgtk3.0-dev and swig
+  * reactivated packages kicad-doc-de and kicad-doc-es; added build
+    dependencies texlive-lang-german and texlive-langspanish.
+  * added a dependency kicad-common -> python as this package contains
+    one python script. Added --with python option to the dh call.
+
+ -- Georges Khaznadar <georgesk@debian.org>  Thu, 07 Jan 2016 19:11:44 +0100
+
+kicad (4.0.0~rc1a-3) unstable; urgency=medium
+
+  * added a build-dependency on docbook-xsl; enforced a non-parallel build
+    for documents, following Simon Richter's hints. Closes: #806967
+
+ -- Georges Khaznadar <georgesk@debian.org>  Sun, 06 Dec 2015 20:08:42 +0100
+
+kicad (4.0.0~rc1a-2) unstable; urgency=medium
+
+  * applied Graham Inggs' patch. Closes: #806967
+
+ -- Georges Khaznadar <georgesk@debian.org>  Thu, 03 Dec 2015 18:27:16 +0100
+
+kicad (4.0.0~rc1a-1) unstable; urgency=medium
+
+  * added a dependency on libglew1.13; Closes #805115
+  * added new flags for CMAKE_OPTS in Makefile to display the correct version
+    in windows' titles.
+  * added "manually" repositories for TO_SOT_Packages_THT.pretty and
+    TO_SOT_Packages_SMD.pretty; Closes #804614
+  * remade the source package as too much files have been added for a simple
+    patch
+
+ -- Georges Khaznadar <georgesk@debian.org>  Sun, 15 Nov 2015 15:58:56 +0100
+
+kicad (4.0.0~rc1-2) unstable; urgency=medium
+
+  * fixed a typo in Makefile
+  * lowered the number of dependencies (dropped the dependency on all boost
+    libs, made a list of more precise dependencies)
+  * added CPPFLAGS to CXXFLAGS (workaround explained at
+    https://wiki.debian.org/Hardening#Notes_for_packages_using_CMake)
+  * added a switch -j4 in Makefile to trigger multithreading for the main
+    build
+
+ -- Georges Khaznadar <georgesk@debian.org>  Wed, 04 Nov 2015 10:48:42 +0100
+
+kicad (4.0.0~rc1-1) unstable; urgency=medium
+
+  * updated the script get-kicad.sh to download the core from Github, docs
+    and libraryes from Github. *.pretty libraries are downloaded from
+    Github too.
+  * created Makefile, doc/Makefile, library/Makefile
+  * modified d/rules, d/control, d/*.install, d/kicad.manpages
+  * written recipes to move shared libraries which were in /usr/bin/_*.kiface
+  * written recipes to choose the file fp-lib-table.for-pretty as a default
+    template
+  * written recipes to fix missing icons and to resize badly shaped 48x48
+    icons.
+  * updated the file debian/copyright
+  * the new package Closes: #795077; Closes: #770227; Closes: #783040;
+    Closes: #787983; Closes: #802973; Closes: #794311; Closes: #798966
+
+ -- Georges Khaznadar <georgesk@debian.org>  Fri, 23 Oct 2015 13:17:13 +0200
+
+kicad (0.20141025+bzr4029-2) unstable; urgency=medium
+
+  * modified the description of the package for Japanese documentation.
+    Closes: #767647
+  * modified the default path to templates. Closes: #771354
+
+ -- Georges Khaznadar <georgesk@debian.org>  Sat, 01 Nov 2014 19:39:30 +0100
+
+kicad (0.20141025+bzr4029-1) unstable; urgency=medium
+
+  * upgraded to the newest upstream releases for the code and the components.
+  * added a rule in d/rules to remove useless .ps files. Closes: #737933
+  * modified kicad.pro. Closes: #763683
+  * updated Standards-Version to 3.9.6
+  * added a build-dependency on unoconv
+  * added build rules to make PDF help files from sources
+  * added the package kicad-doc-ja in d/control, and files
+    d/kicad-doc-*.install, for "pt" and "ja" languages.
+
+ -- Georges Khaznadar <georgesk@debian.org>  Sun, 26 Oct 2014 10:26:51 +0100
+
+kicad (0.20140622+bzr4027-3) unstable; urgency=medium
+
+  * dropped the dependency on zlib-bin, since grep shows no occurence
+    of "minizip" nor "miniunzip" in kicad's source. Closes:  #761320
+
+ -- Georges Khaznadar <georgesk@debian.org>  Fri, 12 Sep 2014 23:20:43 +0200
+
+kicad (0.20140622+bzr4027-2) unstable; urgency=medium
+
+  * added  -DCMAKE_BUILD_TYPE=Release as a definition for cmake.
+    This does not fix every bug, but it removes dialogs about failed
+    assertions raised by wxASSERT, which are usually non-blocking,
+    as long as one decides to continue and unactivate the assert warnings.
+    Feel free to report bugs which affect user-level features.
+    Closes: #749278
+
+ -- Georges Khaznadar <georgesk@debian.org>  Wed, 02 Jul 2014 22:28:01 +0200
+
+kicad (0.20140622+bzr4027-1) unstable; urgency=medium
+
+  * added a routine to creat the version string. Closes: #749308
+  * upgraded to the newest component libraries. Closes: #751994
+
+ -- Georges Khaznadar <georgesk@debian.org>  Sun, 22 Jun 2014 18:29:50 +0200
+
+kicad (0.20140518+bzr4027-2) unstable; urgency=medium
+
+  * applied Samuel Thibault's patch. Closes: #749930
+
+ -- Georges Khaznadar <georgesk@debian.org>  Sun, 01 Jun 2014 16:34:06 +0200
+
+kicad (0.20140518+bzr4027-1) unstable; urgency=medium
+
+  * retrieved the last upstream version, Closes: #741673, Closes: #741437
+  * upgraded some build-dependencies, libwxgtk3.0-dev, applied a part of
+    Olly Betts' patch. Closes: #741440
+  * applied Dimitris Lampridis' patch. Closes: #745705
+  * modified get-kikad.sh to make xz compressed file.
+  * added a rule to fix permissions of ja/kicad.po
+
+ -- Georges Khaznadar <georgesk@debian.org>  Sun, 18 May 2014 14:59:05 +0200
+
+kicad (0.20140224+bzr4027-3.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * It FTBFS because kicad-common is arch independent.
+    Patch by Dejan Latinovic <Dejan.Latinovic@imgtec.com>.
+    Closes: #741743
+
+ -- Anibal Monsalve Salazar <anibal@debian.org>  Fri, 09 May 2014 04:33:24 +0100
+
+kicad (0.20140224+bzr4027-3) unstable; urgency=medium
+
+  * taken in account Samuel Thibault's hint. Closes: #740999
+
+ -- Georges Khaznadar <georgesk@debian.org>  Fri, 07 Mar 2014 11:48:29 +0100
+
+kicad (0.20140224+bzr4027-2) unstable; urgency=medium
+
+  * fixed a bug in d/rules.
+  * added a clause Conflicts: kicad-common ( << 0.20140224),
+    Closes: #740276
+  * Checked that the file Getting_Started_in_KiCad.pdf is distributed with
+    some -doc-xy packages. Closes: #691660
+
+ -- Georges Khaznadar <georgesk@debian.org>  Thu, 06 Mar 2014 02:24:33 +0100
+
+kicad (0.20140224+bzr4027-1) unstable; urgency=medium
+
+  * changed the lp: repository for kicad's library in order to match active
+    repositories listed at
+    https://code.launchpad.net/kicad/+branches?field.lifecycle=ALL&field.lifecycle-empty-marker=1&field.sort_by=most+recently+changed+first&field.sort_by-empty-marker=1
+    the file debian/get-kicad.sh should be more efficient now.
+    Closes: #712259
+  * modified the script debian/clean_sourceless_pdf: more formats are allowed
+    for source files, and the search for source files is now case-insensitive.
+    names without prefixes are allowed too (they are directory names)
+  * fixed a few wrong permissions in packaged files
+  * modified the package assignation for files in usr/share/applications
+  * modified the script debian/get-kicad.sh to add a minimum set of
+    legacy footprints. Closes: #736180; Closes: #707956
+  * removed bloated .ps files from the source package. Closes: #737933
+  * added a dependency on imagemagick to mamange the icons at build time
+
+ -- Georges Khaznadar <georgesk@debian.org>  Mon, 24 Feb 2014 15:40:26 +0100
+
+kicad (0.20131208+bzr4024-1) unstable; urgency=medium
+
+  * scheduled the installation of doc/internat into usr/share/kicad.
+    Closes: #734552
+  * upgraded Standards-Version to 3.9.5
+  * Upgraded to the newest upstream release. Closes: #712303
+  * The script debian/get-kicad.sh makes easier to fetch newer source files
+    Closes: #713861
+
+ -- Georges Khaznadar <georgesk@debian.org>  Wed, 08 Jan 2014 17:25:14 +0100
+
+kicad (0.20130727+bzr4024-2) unstable; urgency=low
+
+  * modified the homepage in d/control. Closes: #713858
+  * modified ./scripts/kicad-get-rss to remove bashisms. Closes: #690645
+  * modified d/kicad-common.install to fix forgotten libraries.
+    Closes: #719530
+
+ -- Georges Khaznadar <georgesk@debian.org>  Wed, 07 Aug 2013 11:19:25 +0200
+
+kicad (0.20130727+bzr4024-1) unstable; urgency=low
+
+  * upgraded to the last revision. Closes: #694740
+  * updated Standards-Version to 3.9.4, compat to 9.
+  * commented out a few lines in include/common.h, to enable the build
+    with wx libraries available in Sid. Don't know why these lines were
+    introduced.
+
+ -- Georges Khaznadar <georgesk@debian.org>  Sat, 27 Jul 2013 18:31:03 +0200
+
+kicad (0.20130125+bzr3921-1) unstable; urgency=low
+
+  * upgraded to the last revision. Closes: #694740
+  * changed my DEBEMAIL
+  * updated the variable GENERATED_FILES in debian/rules to add
+    new files to the cleaning list and remove obsoleted directories
+  * updated the patches for quilt
+  * updated debian/kicad-common.install to take in account the
+    no longer existent directories library and doc.
+
+ -- Georges Khaznadar <georgesk@debian.org>  Fri, 25 Jan 2013 19:08:22 +0100
+
+kicad (0.20120526+bzr3261-1) unstable; urgency=low
+
+  * upgraded to the last stable revision. Closes: #656215
+  * removed debian/source/include-binaries and the additional files which
+    came with it
+  * added a script debian/clean_sourceless_pdf which removes PDF files
+    in many directories when no source was found. This script outputs
+    a log file: debian/erased_pdf.log, which should be cleared when a
+    new upstream package is downloaded.
+  * modified kicad-doc-es.install since there is no source for the pdf file
+  * modified kicad-doc-pl.install since a pdf source is missing
+  * upgraded Standards-Version to 3.9.3
+  * precised a Replaces: stance (kicad (<< 0.20120126+bzr3256-1))
+
+ -- Georges Khaznadar <georgesk@ofset.org>  Sat, 26 May 2012 17:28:12 +0000
+
+kicad (0.20120126+bzr3256-3.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * gcc-4.7: Fix build failure with GCC 4.7.  Closes: #672727.
+    - include/boost/polygon/polygon_90_set_data.hpp: Include
+      "detail/polygon_sort_adaptor.hpp" for gtlsort.
+
+ -- Matej Vela <vela@debian.org>  Fri, 25 May 2012 22:25:46 +0100
+
+kicad (0.20120126+bzr3256-3) unstable; urgency=low
+
+  * excluded .pdf files from dh_compress. Closes: #659660
+
+ -- Georges Khaznadar <georgesk@ofset.org>  Wed, 15 Feb 2012 18:07:06 +0000
+
+kicad (0.20120126+bzr3256-2) unstable; urgency=low
+
+  * added the l10n files into the package kicad-common. Closes: #659091
+  * added eeschema.svg into usr/share/icons/hicolor/scalable/apps.
+    Closes: #659317
+  * applied Vincent Danjean's tip. Closes: #657729
+
+ -- Georges Khaznadar <georgesk@ofset.org>  Fri, 10 Feb 2012 17:54:11 +0000
+
+kicad (0.20120126+bzr3256-1) unstable; urgency=low
+
+  * upgraded to the latest upstream version. Closes: #656215
+  * modified the packaging scripts (simplified debian/rules, added
+    some .install files.
+
+ -- Georges Khaznadar <georgesk@ofset.org>  Thu, 26 Jan 2012 08:42:59 +0100
+
+kicad (0.0.20110616-1) unstable; urgency=low
+
+  * upgraded to the latest upstream version.
+  * included the files sent by their author, by email
+    <4DF93DA9.50504@iridec.com.au>, Closes: #630453
+
+ -- Georges Khaznadar <georgesk@ofset.org>  Thu, 16 Jun 2011 22:52:02 +0200
+
+kicad (0.0.20110507-1) unstable; urgency=low
+
+  * upgraded to the new upstream version. Closes: #624439
+
+ -- Georges Khaznadar <georgesk@ofset.org>  Sat, 07 May 2011 16:52:33 +0200
+
+kicad (0.0.20101024-2) unstable; urgency=low
+
+  * changed the format to 3.0 (quilt)
+  * enabled the parallel build feature in debian/rules
+
+ -- Georges Khaznadar <georgesk@ofset.org>  Sun, 24 Oct 2010 10:54:16 +0200
+
+kicad (0.0.20101024-1) unstable; urgency=low
+
+  * Maintainer change.
+    - Closes: #599427
+  * changed the way sources are downloaded. See debian/packagesrc.sh
+  * upgraded to newest stable release.
+    - Closes: #590483
+    - Closes: #580497
+  * moved the dependency on extra-xdg-menus to Suggests: level.
+    - Closes: #577282
+  * added a list of auto-generated files to remove upon clean target
+
+ -- Georges Khaznadar <georgesk@ofset.org>  Sun, 24 Oct 2010 02:34:38 +0200
+
+kicad (0.0.20100314-1) unstable; urgency=low
+
+  * New upstream (Closes: #575018).
+  * Update Standards-Version to 3.8.4 (no changes needed).
+
+ -- Richard Antony Burton <richardaburton@gmail.com>  Sun, 28 Mar 2010 12:58:23 +0000
+
+kicad (0.0.20090216-1) unstable; urgency=low
+
+  * New upstream release. (Closes: #529628)
+  *  - Upstream fix. (Closes: #532367)
+  *  - Upstream fix. (Closes: #509956)
+  * Move shortcut to electronics section. (Closes: #536307)
+  * Suggest documentation. (Closes: #502546)
+  * Update Standards-Version to 3.8.3 (no changes needed).
+
+ -- Richard Antony Burton <richardaburton@gmail.com>  Sat, 26 Sep 2009 12:47:27 +0000
+
+kicad (0.0.20080825c-1) unstable; urgency=low
+
+  * New upstream release. (Closes: #496897)
+  * Use new cmake build system.
+  * Use new svn repository layout.
+  * Build using wxWidgets 2.8. (Closes: #398615)
+  * Require debhelper 6 to get fix for 459426.
+  * Upstream performance improvement for redraw. (Closes: #469516)
+  * Moved examples to /usr/share/doc/kicad/demos
+  * Update Standards-Version to 3.8.0 (no changes needed).
+  * Add more language packages, for tutorials.
+  * Only en & fr manuals included, rest not currently maintained upstream.
+
+ -- Richard Antony Burton <richardaburton@gmail.com>  Sun, 21 Sep 2008 19:58:47 +0100
+
+kicad (0.0.20071129a-1) unstable; urgency=low
+
+  * New upstream release.
+  * Fix menu icon (not the gnome one).
+  * Update Standards-Version to 3.7.3.0 (Debian menu structure change only).
+
+ -- Richard Antony Burton <richardaburton@gmail.com>  Wed, 19 Dec 2007 17:04:33 +0000
+
+kicad (0.0.20070702-1) unstable; urgency=low
+
+  * New upstream release.
+  * Added man pages for binaries. (Closes: #429223)
+  * All patches from previous version now included upstream.
+
+ -- Richard Antony Burton <richardaburton@gmail.com>  Sun, 08 Jul 2007 09:15:42 +0100
+
+kicad (0.0.20070525-1) unstable; urgency=low
+
+  * New upstream release (Closes: #423873)
+  * Install help files to correct location (Closes: #404783)
+  * For languages without native help files the English doc package is pulled in
+    with the non-English doc package, so there is at least some help.
+  * Not removing all binaries removed during 'clean' (Closes: #424455)
+  * Patch for the 3D Display image export problem (Closes: #423882)
+
+ -- Richard Antony Burton <richardaburton@gmail.com>  Sun, 27 May 2007 13:43:01 +0100
+
+kicad (0.0.20060829-2) unstable; urgency=low
+
+  * Fixing wrong location of helpfiles (Closes: #404783) (djp)
+
+ -- Daniel J. Priem <danielpriem@flexserv.de>  Thu, 28 Dec 2006 12:20:31 +0100
+
+kicad (0.0.20060829-1) unstable; urgency=low
+
+  * now binNMU safe (rab)
+  * This version is 20060828 but since i forgot something inside the orig.tar.gz i must increase the version number (djp)
+  * Added newer documentation (djp)
+  * Added some updated po files (djp)
+  * Added italian help files (djp)
+
+ -- Daniel J. Priem <danielpriem@flexserv.de>  Sun, 12 Nov 2006 21:40:23 +0100
+
+kicad (0.0.20060828-1) unstable; urgency=low
+
+  * New upstream.
+  * Split help files out into separate language-specific packages.
+
+ -- Debian Kicad Team <kicad-devel@lists.mose.flexserv.de>  Fri,  3 Nov 2006 19:33:07 +0100
+
+kicad (0.0.20060626-1) unstable; urgency=low
+
+  * Initial release (Closes: #278581)
+
+ -- Richard Antony Burton <richardaburton@hotmail.com>  Sat, 30 Sep 2006 22:24:06 +0200
diff --git a/clean_sourceless_pdf b/clean_sourceless_pdf
new file mode 100755 (executable)
index 0000000..8be694b
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+sourceSuffixes="odt odp odg odm sxw"
+: > debian/erased_pdfs.log
+
+for d in doc Documentation pcb_calculator; do
+    find $d -name '*.pdf' -print |
+    while read p; do
+       ok=0
+       dir=$(dirname "$p")
+       b=$(basename "$p")
+       for s in $sourceSuffixes; do
+           sourcePattern="${b/.pdf/*.$s}"
+           found=$(find $dir -iname "$sourcePattern")
+           if  [ -n "$found" ]; then ## found source file
+               ok=1
+           fi
+       done
+       if [ -n "$(find $dir -iname '${b/.pdf/}')" ]; then ## found directory
+           ok=1
+       fi
+       if [ $ok = 0 ]; then
+           echo $p is sourceless, erasing it | tee -a debian/erased_pdfs.log
+           rm "$p"
+       fi
+    done
+done
diff --git a/compat b/compat
new file mode 100644 (file)
index 0000000..ec63514
--- /dev/null
+++ b/compat
@@ -0,0 +1 @@
+9
diff --git a/control b/control
new file mode 100644 (file)
index 0000000..5d43e73
--- /dev/null
+++ b/control
@@ -0,0 +1,292 @@
+Source: kicad
+Section: electronics
+Priority: optional
+Maintainer: Georges Khaznadar <georgesk@debian.org>
+Uploaders:
+ Richard Antony Burton <richardaburton@gmail.com>,
+ Carsten Schoenert <c.schoenert@t-online.de>,
+Build-Depends:
+ asciidoc-base,
+ asciidoc-dblatex,
+ cmake,
+ dblatex,
+ debhelper (>= 9.20120417),
+ dh-python,
+ docbook-utils,
+ docbook-xsl,
+ doxygen,
+ dpkg-dev (>= 1.16.1.1~),
+ fonts-vlgothic,
+ gettext,
+ git,
+ imagemagick,
+ libboost-context-dev,
+ libboost-date-time-dev,
+ libboost-dev,
+ libboost-filesystem-dev,
+ libboost-iostreams-dev,
+ libboost-locale-dev,
+ libboost-program-options-dev,
+ libboost-regex-dev,
+ libboost-system-dev,
+ libboost-thread-dev,
+ libbz2-dev,
+ libcairo2-dev,
+ libcurl4-gnutls-dev,
+ libglew-dev,
+ liblocale-gettext-perl,
+ libpython-stdlib,
+ libterm-readkey-perl,
+ libtext-wrapi18n-perl,
+ libunicode-linebreak-perl,
+ libwxgtk3.0-dev,
+ libxml2-utils,
+ lmodern,
+ pandoc,
+ pkg-config,
+ po4a,
+ python-all,
+ python-dev,
+ python-wxgtk3.0-dev,
+ quilt,
+ source-highlight,
+ swig,
+ texlive-fonts-extra,
+ texlive-lang-cyrillic,
+ texlive-lang-english,
+ texlive-lang-european,
+ texlive-lang-french,
+ texlive-lang-german,
+ texlive-lang-italian,
+ texlive-lang-japanese,
+ texlive-lang-polish,
+ texlive-lang-spanish,
+ texlive-xetex,
+ xmlto,
+Vcs-Git: https://anonscm.debian.org/cgit/pkg-electronics/kicad.git
+Vcs-Browser: https://anonscm.debian.org/cgit/pkg-electronics/kicad.git
+Standards-Version: 3.9.8
+Homepage: http://www.kicad-pcb.org
+
+Package: kicad
+Architecture: any
+Depends:
+ kicad-common (>= ${source:Version}),
+ python-wxgtk3.0,
+ ${misc:Depends},
+ ${python:Depends},
+ ${shlibs:Depends},
+Suggests:
+ extra-xdg-menus,
+ kicad-doc-ca | kicad-doc-de | kicad-doc-en | kicad-doc-es | kicad-doc-fr | kicad-doc-it | kicad-doc-ja | kicad-doc-nl | kicad-doc-pl | kicad-doc-ru,
+Recommends:
+ xsltproc,
+Description: Electronic schematic and PCB design software
+ Kicad is a suite of programs for the creation of printed circuit boards.
+ It includes a schematic editor, a PCB layout tool, support tools and a
+ 3D viewer to display a finished & fully populated PCB.
+ .
+ Kicad is made up of 5 main components:
+ .
+  * kicad - project manager
+  * eeschema - schematic editor
+  * pcbnew - PCB editor
+  * gerbview - GERBER viewer
+  * cvpcb - footprint selector for components
+ .
+ Libraries:
+  * Both eeschema and pcbnew have library managers and editors for their
+    components and footprints
+  * You can easily create, edit, delete and exchange library items
+  * Documentation files can be associated with components, footprints and key
+    words, allowing a fast search by function
+  * Very large libraries are available for schematic components and footprints
+  * Most components have corresponding 3D models
+
+Package: kicad-common
+Architecture: any
+Multi-Arch: foreign
+Depends:
+ python,
+ ${misc:Depends},
+Recommends:
+ kicad,
+Description: Common files used by kicad
+ This package contains the component libararies (schematics and footprints),
+ also the 3D modell libraries. Also this package contains the i18n language
+ files for KiCad and common used scripts, templates, demos, Python scripting
+ plugins and MIME links.
+
+Package: kicad-doc-ca
+Section: doc
+Architecture: all
+Multi-Arch: foreign
+Depends:
+ ${misc:Depends},
+Description: Kicad help files (Catalan)
+ This package provides various documentation files for KiCad in Catalan, like
+ the EPUB and the PDF files and also the OnLine HTML documentation for:
+ .
+  * GSIK - Getting Started in KiCad
+  * KiCad - The main project editor
+
+Package: kicad-doc-de
+Section: doc
+Architecture: all
+Multi-Arch: foreign
+Depends:
+ ${misc:Depends},
+Description: Kicad help files (German)
+ This package provides various documentation files for KiCad in German, like
+ the EPUB and the PDF files and also the OnLine HTML documentation for:
+ .
+  * CvPcb - Component association of Footprints
+  * Eeschema -schematic capture editor
+  * GerbView - Gerber file viewer (RS 274 X format)
+  * GSIK - Getting Started in KiCad
+  * IDF Exporter - Export tool for IDFv3 boards and libraries
+  * KiCad - The main project editor
+  * Pcbnew - The printed circuit board software tool
+  * PlEditor - The layout editor for custom title block
+
+Package: kicad-doc-en
+Section: doc
+Architecture: all
+Multi-Arch: foreign
+Depends:
+ ${misc:Depends},
+Description: Kicad help files (English)
+ This package provides various documentation files for KiCad in English, like
+ the EPUB and the PDF files and also the OnLine HTML documentation for:
+ .
+  * CvPcb - Component association of Footprints
+  * Eeschema -schematic capture editor
+  * GerbView - Gerber file viewer (RS 274 X format)
+  * GSIK - Getting Started in KiCad
+  * IDF Exporter - Export tool for IDFv3 boards and libraries
+  * KiCad - The main project editor
+  * Pcbnew - The printed circuit board software tool
+  * PlEditor - The layout editor for custom title block
+ .
+ You will also find a GUI translation HOWTO inside this package if you want to
+ help with translation of the KiCad GUI into new or existing languages.
+
+Package: kicad-doc-es
+Section: doc
+Architecture: all
+Multi-Arch: foreign
+Depends:
+ ${misc:Depends},
+Description: Kicad help files (Spanish)
+ This package provides various documentation files for KiCad in Spanish, like
+ the EPUB and the PDF files and also the OnLine HTML documentation for:
+ .
+  * CvPcb - Component association of Footprints
+  * Eeschema -schematic capture editor
+  * GerbView - Gerber file viewer (RS 274 X format)
+  * GSIK - Getting Started in KiCad
+  * KiCad - The main project editor
+  * Pcbnew - The printed circuit board software tool
+  * PlEditor - The layout editor for custom title block
+
+Package: kicad-doc-fr
+Section: doc
+Architecture: all
+Multi-Arch: foreign
+Depends:
+ ${misc:Depends},
+Description: Kicad help files (French)
+ This package provides various documentation files for KiCad in French, like
+ the EPUB and the PDF files and also the OnLine HTML documentation for:
+ .
+  * CvPcb - Component association of Footprints
+  * Eeschema -schematic capture editor
+  * GSIK - Getting Started in KiCad
+  * KiCad - The main project editor
+  * Pcbnew - The printed circuit board software tool
+  * PlEditor - The layout editor for custom title block
+
+Package: kicad-doc-it
+Section: doc
+Architecture: all
+Multi-Arch: foreign
+Depends:
+ ${misc:Depends},
+Description: Kicad help files (Italian)
+ This package provides various documentation files for KiCad in Italian, like
+ the EPUB and the PDF files and also the OnLine HTML documentation for:
+ .
+  * CvPcb - Component association of Footprints
+  * Eeschema -schematic capture editor
+  * GerbView - Gerber file viewer (RS 274 X format)
+  * GSIK - Getting Started in KiCad
+  * IDF Exporter - Export tool for IDFv3 boards and libraries
+  * KiCad - The main project editor
+  * Pcbnew - The printed circuit board software tool
+  * PlEditor - The layout editor for custom title block
+
+Package: kicad-doc-ja
+Section: doc
+Architecture: all
+Multi-Arch: foreign
+Depends:
+ ${misc:Depends},
+Description: Kicad help files (Japanese)
+ This package provides various documentation files for KiCad in Japanese, like
+ the EPUB and the PDF files and also the OnLine HTML documentation for:
+ .
+  * CvPcb - Component association of Footprints
+  * Eeschema -schematic capture editor
+  * GerbView - Gerber file viewer (RS 274 X format)
+  * GSIK - Getting Started in KiCad
+  * IDF Exporter - Export tool for IDFv3 boards and libraries
+  * KiCad - The main project editor
+  * Pcbnew - The printed circuit board software tool
+  * PlEditor - The layout editor for custom title block
+
+Package: kicad-doc-nl
+Section: doc
+Architecture: all
+Multi-Arch: foreign
+Depends:
+ ${misc:Depends},
+Description: Kicad help files (Dutch)
+ This package provides various documentation files for KiCad in Dutch, like
+ the EPUB and the PDF files and also the OnLine HTML documentation for:
+ .
+  * GSIK - Getting Started in KiCad
+
+Package: kicad-doc-pl
+Section: doc
+Architecture: all
+Multi-Arch: foreign
+Depends:
+ ${misc:Depends},
+Description: Kicad help files (Polish)
+ This package provides various documentation files for KiCad in Polish, like
+ the EPUB and the PDF files and also the OnLine HTML documentation for:
+ .
+  * CvPcb - Component association of Footprints
+  * Eeschema -schematic capture editor
+  * GerbView - Gerber file viewer (RS 274 X format)
+  * GSIK - Getting Started in KiCad
+  * IDF Exporter - Export tool for IDFv3 boards and libraries
+  * KiCad - The main project editor
+  * Pcbnew - The printed circuit board software tool
+  * PlEditor - The layout editor for custom title block
+
+Package: kicad-doc-ru
+Section: doc
+Architecture: all
+Multi-Arch: foreign
+Depends: ${misc:Depends}
+Description: Kicad help files (Russian)
+ This package provides various documentation files for KiCad in Russian, like
+ the EPUB and the PDF files and also the OnLine HTML documentation for:
+ .
+  * CvPcb - Component association of Footprints
+  * GerbView - Gerber file viewer (RS 274 X format)
+  * GSIK - Getting Started in KiCad
+  * IDF Exporter - Export tool for IDFv3 boards and libraries
+  * KiCad - The main project editor
+  * PlEditor - The layout editor for custom title block
diff --git a/copyright b/copyright
new file mode 100644 (file)
index 0000000..13732a4
--- /dev/null
+++ b/copyright
@@ -0,0 +1,675 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: kicad
+Source: see file get-kicad.sh; lp:kicad/4.0; https://github.com/KiCad/kicad-doc;
+ https://github.com/KiCad/library; https://github.com/KiCad/*.pretty
+
+Files: *
+Copyright: (C) 2015 KiCad Developers <kicad-developers@lists.launchpad.net>
+License: GPL-2+
+
+Files: 3d-viewer/trackball.*
+Copyright: (C) 1993, 1994, Silicon Graphics, Inc.
+License: SG1
+
+Files: common/geometry/hetriang.cpp
+Copyright: (C) 1998, 2000-2007, 2010-2013 SINTEF ICT, Applied Mathematics, Norway
+           (C) 2013 CERN, Maciej Suminski <maciej.suminski@cern.ch>
+License: AFPL1
+
+Files: include/ttl/*
+Copyright: (C) 1998, 2000-2007, 2010-2013 SINTEF ICT, Applied Mathematics, Norway
+License: AFPL1
+
+Files: polygon/clipper.*
+Copyright: (C) 2010-2014 Angus Johnson
+License: BOOST1
+
+Files: polygon/poly2tri/*
+Copyright: (C) 2009-2010, Poly2Tri Contributors https://github.com/jhasse/poly2tri
+License: Poly2Tri
+
+Files: eeschema/plugins/bom2csv.xsl
+Copyright: (C) 2013 Stefan Helmert
+License: GPL-2+
+
+Files: eeschema/plugins/netlist_form_*.xsl
+Copyright: (C) 2010, SoftPLC Corporation
+License: GPL-2+
+
+Files: pcbnew/specctra.keywords
+Copyright: (C) 2007-2011 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
+License: GPL-2+
+
+Files: pcbnew/autorouter/rect_placement/rect_placement.*
+Copyright: (C) 2000-2002 by Javier Arevalo
+License: other
+ This code is free to use and modify for all purposes
+
+Files: include/gal/opengl/glm/*
+Copyright: (C) 2005 - 2013 G-Truc Creation (www.g-truc.net)
+License: GLM1
+
+Files: potrace/*
+Copyright: (C) 2001-2007 Peter Selinger
+License: GPL-2+
+
+Files: doc/*
+Copyright: (C) 2006-2015 KiCad Developers
+License: GPL-2+ or CC-BY-SA-3.0
+Comment:
+ The KiCad documentation is dual licensed.
+ You may distribute it and/or modify it under the terms of either
+ the GNU General Public License (http://www.gnu.org/licenses/gpl.html),
+ version 3 or later, or the Creative Commons Attribution License
+ (http://creativecommons.org/licenses/by/3.0/), version 3.0 or later.
+ .
+ See: http://kicad-pcb.org/about/licenses/
+
+Files: libraries/*
+Copyright: (C) 2006-2015 KiCad Developers
+License: GPL-2+
+
+Files: lib_dxf/*
+Copyright: (C) 2011 Rallaz <rallazz@gmail.com>
+License: GPL-2+
+
+Files: CMakeModules/FindPackageMessage.cmake
+Copyright: (C) 2008-2009 Kitware, Inc.
+License: BSD1
+
+Files: CMakeModules/FindCairo.cmake
+Copyright: (C) 2012 Dmitry Baryshnikov <polimax at mail dot ru>
+License: BSD1
+
+Files: CMakeModules/FindwxWidgets.cmake
+Copyright: (C) 2004-2009 Kitware, Inc.
+           (C) 2007-2009 Miguel A. Figueroa-Villanueva <miguelf at ieee dot org>
+License: BSD1
+
+Files: CMakeModules/SelectLibraryConfigurations.cmake
+Copyright: (C) 2009 Will Dicharry <wdicharry@stellarscience.com>
+           (C) 2005-2009 Kitware, Inc.
+License: BSD1
+
+Files: CMakeModules/UsewxWidgets.cmake
+Copyright: (C) 2004-2009 Kitware, Inc.
+           (C) 2006      Jan Woetzel
+License: BSD1
+
+Files: CMakeModules/CheckCXXSymbolExists.cmake
+Copyright: (C) 2003-2011 Kitware, Inc.
+License: BSD1
+
+Files: CMakeModules/CMakeFindFrameworks.cmake
+Copyright: (C) 2003-2011 Kitware, Inc.
+License: BSD1
+
+Files: CMakeModules/FindSubversion.cmake
+Copyright: (C) 2006, Tristan Carel
+License: BSD1
+
+Files: CMakeModules/FindPythonLibs.cmake
+Copyright: (C) 2001-2009 Kitware, Inc.
+License: BSD1
+
+Files: CMakeModules/FindGLEW.cmake
+Copyright: (C) 2009 Boudewijn Rempt <boud@valdyas.org>
+License: BSD1
+
+Files: CMakeModules/FindPythonInterp.cmake
+Copyright: (C) 2005-2010 Kitware, Inc.
+           (C) 2011 Bjoern Ricks <bjoern.ricks@gmail.com>
+           (C) 2012 Rolf Eike Beer <eike@sf-mail.de>
+License: BSD1
+
+Files: debian/*
+Copyright: (C) 2006-2010 Richard A Burton <richardaburton@gmail.com>
+           (C) 2015-2016 Georges Khaznadar <georgesk@debian.org>
+           (C) 2016-2017 Carsten schoenert <c.schoenert@t-online.de>
+License: GPL-2+
+
+Files: pcbnew/github/avhttp-master.zip
+Copyright: (C) 2015 Jack <jack.wgm@gmail.com>
+           (C) 2015 coleman <omegacoleman@gmail.com>
+           (C) 2015 eahydra <xxeaglenet@gmail.com>
+           (C) 2015 kiki <kiki.caicai@gmail.com>
+           (C) 2015 microcai <microcaicai@gmail.com>
+License: BOOST1
+
+License: GPL-2+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+ .
+ This package 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.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>
+ .
+ On Debian systems, the complete text of the GNU General
+ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
+
+License: CC-BY-SA-3.0
+ Creative Commons Attribution-ShareAlike 3.0 Unported
+ .
+ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL
+ SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT
+ RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS.
+ CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND
+ DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.
+ .
+ License
+ .
+ THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
+ COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
+ COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
+ AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+ .
+ BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE
+ BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE
+ CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE
+ IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
+ .
+ 1. Definitions
+ .
+ a. "Adaptation" means a work based upon the Work, or upon the Work and other
+    pre-existing works, such as a translation, adaptation, derivative work,
+    arrangement of music or other alterations of a literary or artistic work,
+    or phonogram or performance and includes cinematographic adaptations or any
+    other form in which the Work may be recast, transformed, or adapted
+    including in any form recognizably derived from the original, except that a
+    work that constitutes a Collection will not be considered an Adaptation for
+    the purpose of this License. For the avoidance of doubt, where the Work is
+    a musical work, performance or phonogram, the synchronization of the Work
+    in timed-relation with a moving image ("synching") will be considered an
+    Adaptation for the purpose of this License.
+ .
+ b. "Collection" means a collection of literary or artistic works, such as
+    encyclopedias and anthologies, or performances, phonograms or broadcasts,
+    or other works or subject matter other than works listed in Section 1(f)
+    below, which, by reason of the selection and arrangement of their contents,
+    constitute intellectual creations, in which the Work is included in its
+    entirety in unmodified form along with one or more other contributions,
+    each constituting separate and independent works in themselves, which
+    together are assembled into a collective whole. A work that constitutes a
+    Collection will not be considered an Adaptation (as defined below) for the
+    purposes of this License.
+ .
+ c. "Creative Commons Compatible License" means a license that is listed at
+    http://creativecommons.org/compatiblelicenses that has been approved by
+    Creative Commons as being essentially equivalent to this License,
+    including, at a minimum, because that license: (i) contains terms that
+    have the same purpose, meaning and effect as the License Elements of this
+    License; and, (ii) explicitly permits the relicensing of adaptations of
+    works made available under that license under this License or a Creative
+    Commons jurisdiction license with the same License Elements as this
+    License.
+ .
+ d. "Distribute" means to make available to the public the original and copies
+    of the Work or Adaptation, as appropriate, through sale or other transfer
+    of ownership.
+ .
+ e. "License Elements" means the following high-level license attributes as
+    selected by Licensor and indicated in the title of this License:
+    Attribution, ShareAlike.
+ .
+ f. "Licensor" means the individual, individuals, entity or entities that
+    offer(s) the Work under the terms of this License.
+ .
+ g. "Original Author" means, in the case of a literary or artistic work, the
+    individual, individuals, entity or entities who created the Work or if no
+    individual or entity can be identified, the publisher; and in addition (i)
+    in the case of a performance the actors, singers, musicians, dancers, and
+    other persons who act, sing, deliver, declaim, play in, interpret or
+    otherwise perform literary or artistic works or expressions of folklore;
+    (ii) in the case of a phonogram the producer being the person or legal
+    entity who first fixes the sounds of a performance or other sounds; and,
+    (iii) in the case of broadcasts, the organization that transmits the
+    broadcast.
+ .
+ h. "Work" means the literary and/or artistic work offered under the terms of
+    this License including without limitation any production in the literary,
+    scientific and artistic domain, whatever may be the mode or form of its
+    expression including digital form, such as a book, pamphlet and other
+    writing; a lecture, address, sermon or other work of the same nature; a
+    dramatic or dramatico-musical work; a choreographic work or entertainment
+    in dumb show; a musical composition with or without words; a
+    cinematographic work to which are assimilated works expressed by a process
+    analogous to cinematography; a work of drawing, painting, architecture,
+    sculpture, engraving or lithography; a photographic work to which are
+    assimilated works expressed by a process analogous to photography; a work
+    of applied art; an illustration, map, plan, sketch or three-dimensional
+    work relative to geography, topography, architecture or science; a
+    performance; a broadcast; a phonogram; a compilation of data to the extent
+    it is protected as a copyrightable work; or a work performed by a variety
+    or circus performer to the extent it is not otherwise considered a literary
+    or artistic work.
+ .
+ i. "You" means an individual or entity exercising rights under this License
+    who has not previously violated the terms of this License with respect to
+    the Work, or who has received express permission from the Licensor to
+    exercise rights under this License despite a previous violation.
+ .
+ j. "Publicly Perform" means to perform public recitations of the Work and to
+    communicate to the public those public recitations, by any means or
+    process, including by wire or wireless means or public digital
+    performances; to make available to the public Works in such a way that
+    members of the public may access these Works from a place and at a place
+    individually chosen by them; to perform the Work to the public by any means
+    or process and the communication to the public of the performances of the
+    Work, including by public digital performance; to broadcast and rebroadcast
+    the Work by any means including signs, sounds or images.
+ .
+ k. "Reproduce" means to make copies of the Work by any means including without
+    limitation by sound or visual recordings and the right of fixation and
+    reproducing fixations of the Work, including storage of a protected
+    performance or phonogram in digital form or other electronic medium.
+ .
+ 2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit,
+    or restrict any uses free from copyright or rights arising from limitations
+    or exceptions that are provided for in connection with the copyright
+    protection under copyright law or other applicable laws.
+ .
+ 3. License Grant. Subject to the terms and conditions of this License,
+    Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
+    perpetual (for the duration of the applicable copyright) license to
+    exercise the rights in the Work as stated below:
+ .
+ a. to Reproduce the Work, to incorporate the Work into one or more
+    Collections, and to Reproduce the Work as incorporated in the Collections;
+ .
+ b. to create and Reproduce Adaptations provided that any such Adaptation,
+    including any translation in any medium, takes reasonable steps to clearly
+    label, demarcate or otherwise identify that changes were made to the
+    original Work. For example, a translation could be marked "The original
+    work was translated from English to Spanish," or a modification could
+    indicate "The original work has been modified.";
+ .
+ c. to Distribute and Publicly Perform the Work including as incorporated in
+    Collections; and,
+ .
+ d. to Distribute and Publicly Perform Adaptations.
+ .
+ e. For the avoidance of doubt:
+ .
+ i. Non-waivable Compulsory License Schemes. In those jurisdictions in which
+    the right to collect royalties through any statutory or compulsory
+    licensing scheme cannot be waived, the Licensor reserves the exclusive
+    right to collect such royalties for any exercise by You of the rights
+    granted under this License;
+ .
+ ii. Waivable Compulsory License Schemes. In those jurisdictions in which the
+     right to collect royalties through any statutory or compulsory licensing
+     scheme can be waived, the Licensor waives the exclusive right to collect
+     such royalties for any exercise by You of the rights granted under this
+     License; and,
+ .
+ iii. Voluntary License Schemes. The Licensor waives the right to collect
+      royalties, whether individually or, in the event that the Licensor is a
+      member of a collecting society that administers voluntary licensing
+      schemes, via that society, from any exercise by You of the rights granted
+      under this License.
+ .
+ The above rights may be exercised in all media and formats whether now known
+ or hereafter devised. The above rights include the right to make such
+ modifications as are technically necessary to exercise the rights in other
+ media and formats. Subject to Section 8(f), all rights not expressly granted
+ by Licensor are hereby reserved.
+ .
+ 4. Restrictions. The license granted in Section 3 above is expressly made
+    subject to and limited by the following restrictions:
+ .
+ a. You may Distribute or Publicly Perform the Work only under the terms of
+    this License. You must include a copy of, or the Uniform Resource
+    Identifier (URI) for, this License with every copy of the Work You
+    Distribute or Publicly Perform. You may not offer or impose any terms on
+    the Work that restrict the terms of this License or the ability of the
+    recipient of the Work to exercise the rights granted to that recipient
+    under the terms of the License. You may not sublicense the Work. You must
+    keep intact all notices that refer to this License and to the disclaimer of
+    warranties with every copy of the Work You Distribute or Publicly Perform.
+    When You Distribute or Publicly Perform the Work, You may not impose any
+    effective technological measures on the Work that restrict the ability of a
+    recipient of the Work from You to exercise the rights granted to that
+    recipient under the terms of the License. This Section 4(a) applies to the
+    Work as incorporated in a Collection, but this does not require the
+    Collection apart from the Work itself to be made subject to the terms of
+    this License. If You create a Collection, upon notice from any Licensor You
+    must, to the extent practicable, remove from the Collection any credit as
+    required by Section 4(c), as requested. If You create an Adaptation, upon
+    notice from any Licensor You must, to the extent practicable, remove from
+    the Adaptation any credit as required by Section 4(c), as requested.
+ .
+ b. You may Distribute or Publicly Perform an Adaptation only under the terms
+    of: (i) this License; (ii) a later version of this License with the same
+    License Elements as this License; (iii) a Creative Commons jurisdiction
+    license (either this or a later license version) that contains the same
+    License Elements as this License (e.g., Attribution-ShareAlike 3.0 US));
+    (iv) a Creative Commons Compatible License. If you license the Adaptation
+    under one of the licenses mentioned in (iv), you must comply with the terms
+    of that license. If you license the Adaptation under the terms of any of
+    the licenses mentioned in (i), (ii) or (iii) (the "Applicable License"),
+    you must comply with the terms of the Applicable License generally and the
+    following provisions: (I) You must include a copy of, or the URI for, the
+    Applicable License with every copy of each Adaptation You Distribute or
+    Publicly Perform; (II) You may not offer or impose any terms on the
+    Adaptation that restrict the terms of the Applicable License or the ability
+    of the recipient of the Adaptation to exercise the rights granted to that
+    recipient under the terms of the Applicable License; (III) You must keep
+    intact all notices that refer to the Applicable License and to the
+    disclaimer of warranties with every copy of the Work as included in the
+    Adaptation You Distribute or Publicly Perform; (IV) when You Distribute or
+    Publicly Perform the Adaptation, You may not impose any effective
+    technological measures on the Adaptation that restrict the ability of a
+    recipient of the Adaptation from You to exercise the rights granted to that
+    recipient under the terms of the Applicable License. This Section 4(b)
+    applies to the Adaptation as incorporated in a Collection, but this does
+    not require the Collection apart from the Adaptation itself to be made
+    subject to the terms of the Applicable License.
+ .
+ c. If You Distribute, or Publicly Perform the Work or any Adaptations or
+    Collections, You must, unless a request has been made pursuant to Section
+    4(a), keep intact all copyright notices for the Work and provide,
+    reasonable to the medium or means You are utilizing: (i) the name of the
+    Original Author (or pseudonym, if applicable) if supplied, and/or if the
+    Original Author and/or Licensor designate another party or parties (e.g., a
+    sponsor institute, publishing entity, journal) for attribution
+    ("Attribution Parties") in Licensor's copyright notice, terms of service or
+    by other reasonable means, the name of such party or parties; (ii) the
+    title of the Work if supplied; (iii) to the extent reasonably practicable,
+    the URI, if any, that Licensor specifies to be associated with the Work,
+    unless such URI does not refer to the copyright notice or licensing
+    information for the Work; and (iv) , consistent with Ssection 3(b), in the
+    case of an Adaptation, a credit identifying the use of the Work in the
+    Adaptation (e.g., "French translation of the Work by Original Author," or
+    "Screenplay based on original Work by Original Author"). The credit
+    required by this Section 4(c) may be implemented in any reasonable manner;
+    provided, however, that in the case of a Adaptation or Collection, at a
+    minimum such credit will appear, if a credit for all contributing authors
+    of the Adaptation or Collection appears, then as part of these credits and
+    in a manner at least as prominent as the credits for the other contributing
+    authors. For the avoidance of doubt, You may only use the credit required
+    by this Section for the purpose of attribution in the manner set out above
+    and, by exercising Your rights under this License, You may not implicitly
+    or explicitly assert or imply any connection with, sponsorship or
+    endorsement by the Original Author, Licensor and/or Attribution Parties, as
+    appropriate, of You or Your use of the Work, without the separate, express
+    prior written permission of the Original Author, Licensor and/or
+    Attribution Parties.
+ .
+ d. Except as otherwise agreed in writing by the Licensor or as may be
+    otherwise permitted by applicable law, if You Reproduce, Distribute or
+    Publicly Perform the Work either by itself or as part of any Adaptations or
+    Collections, You must not distort, mutilate, modify or take other
+    derogatory action in relation to the Work which would be prejudicial to the
+    Original Author's honor or reputation. Licensor agrees that in those
+    jurisdictions (e.g. Japan), in which any exercise of the right granted in
+    Section 3(b) of this License (the right to make Adaptations) would be
+    deemed to be a distortion, mutilation, modification or other derogatory
+    action prejudicial to the Original Author's honor and reputation, the
+    Licensor will waive or not assert, as appropriate, this Section, to the
+    fullest extent permitted by the applicable national law, to enable You to
+    reasonably exercise Your right under Section 3(b) of this License (right to
+    make Adaptations) but not otherwise.
+ .
+ 5. Representations, Warranties and Disclaimer
+ .
+ UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS
+ THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
+ CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING,
+ WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A
+ PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER
+ DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT
+ DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED
+ WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
+ .
+ 6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW,
+    IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY
+    SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING
+    OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN
+    ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ .
+ 7. Termination
+ .
+ a. This License and the rights granted hereunder will terminate automatically
+    upon any breach by You of the terms of this License. Individuals or
+    entities who have received Adaptations or Collections from You under this
+    License, however, will not have their licenses terminated provided such
+    individuals or entities remain in full compliance with those licenses.
+    Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
+ .
+ b. Subject to the above terms and conditions, the license granted here is
+    perpetual (for the duration of the applicable copyright in the Work).
+    Notwithstanding the above, Licensor reserves the right to release the Work
+    under different license terms or to stop distributing the Work at any time;
+    provided, however that any such election will not serve to withdraw this
+    License (or any other license that has been, or is required to be, granted
+    under the terms of this License), and this License will continue in full
+    force and effect unless terminated as stated above.
+ .
+ 8. Miscellaneous
+ .
+ a. Each time You Distribute or Publicly Perform the Work or a Collection, the
+    Licensor offers to the recipient a license to the Work on the same terms
+    and conditions as the license granted to You under this License.
+ .
+ b. Each time You Distribute or Publicly Perform an Adaptation, Licensor offers
+    to the recipient a license to the original Work on the same terms and
+    conditions as the license granted to You under this License.
+ .
+ c. If any provision of this License is invalid or unenforceable under
+    applicable law, it shall not affect the validity or enforceability of the
+    remainder of the terms of this License, and without further action by the
+    parties to this agreement, such provision shall be reformed to the minimum
+    extent necessary to make such provision valid and enforceable.
+ .
+ d. No term or provision of this License shall be deemed waived and no breach
+    consented to unless such waiver or consent shall be in writing and signed
+    by the party to be charged with such waiver or consent.
+ .
+ e. This License constitutes the entire agreement between the parties with
+    respect to the Work licensed here. There are no understandings, agreements
+    or representations with respect to the Work not specified here. Licensor
+    shall not be bound by any additional provisions that may appear in any
+    communication from You. This License may not be modified without the mutual
+    written agreement of the Licensor and You.
+ .
+ f. The rights granted under, and the subject matter referenced, in this
+    License were drafted utilizing the terminology of the Berne Convention for
+    the Protection of Literary and Artistic Works (as amended on September 28,
+    1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the
+    WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright
+    Convention (as revised on July 24, 1971). These rights and subject matter
+    take effect in the relevant jurisdiction in which the License terms are
+    sought to be enforced according to the corresponding provisions of the
+    implementation of those treaty provisions in the applicable national law.
+    If the standard suite of rights granted under applicable copyright law
+    includes additional rights not granted under this License, such additional
+    rights are deemed to be included in the License; this License is not
+    intended to restrict the license of any rights under applicable law.
+ .
+ Creative Commons Notice
+ .
+ Creative Commons is not a party to this License, and makes no warranty
+ whatsoever in connection with the Work. Creative Commons will not be liable to
+ You or any party on any legal theory for any damages whatsoever, including
+ without limitation any general, special, incidental or consequential damages
+ arising in connection to this license. Notwithstanding the foregoing two (2)
+ sentences, if Creative Commons has expressly identified itself as the Licensor
+ hereunder, it shall have all rights and obligations of Licensor.
+ .
+ Except for the limited purpose of indicating to the public that the Work is
+ licensed under the CCPL, Creative Commons does not authorize the use by either
+ party of the trademark "Creative Commons" or any related trademark or logo of
+ Creative Commons without the prior written consent of Creative Commons. Any
+ permitted use will be in compliance with Creative Commons' then-current
+ trademark usage guidelines, as may be published on its website or otherwise
+ made available upon request from time to time. For the avoidance of doubt,
+ this trademark restriction does not form part of the License.
+
+License: SG1
+ Permission to use, copy, modify, and distribute this software for
+ any purpose and without fee is hereby granted, provided that the above
+ copyright notice appear in all copies and that both the copyright notice
+ and this permission notice appear in supporting documentation, and that
+ the name of Silicon Graphics, Inc. not be used in advertising
+ or publicity pertaining to distribution of the software without specific,
+ written prior permission.
+ .
+ THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
+ AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
+ INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
+ FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
+ GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
+ SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
+ KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
+ LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
+ THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
+ ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
+ POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
+ .
+ US Government Users Restricted Rights
+ Use, duplication, or disclosure by the Government is subject to
+ restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
+ (c)(1)(ii) of the Rights in Technical Data and Computer Software
+ clause at DFARS 252.227-7013 and/or in similar or successor
+ clauses in the FAR or the DOD or NASA FAR Supplement.
+ Unpublished-- rights reserved under the copyright laws of the
+ United States.  Contractor/manufacturer is Silicon Graphics,
+ Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
+ .
+ OpenGL(TM) is a trademark of Silicon Graphics, Inc.
+
+License: AFPL1
+ This file is part of TTL.
+ .
+ TTL is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+ .
+ TTL 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 Affero General Public License for more details.
+ .
+ You should have received a copy of the GNU Affero General Public
+ License along with TTL. If not, see
+ <http://www.gnu.org/licenses/>.
+ .
+ In accordance with Section 7(b) of the GNU Affero General Public
+ License, a covered work must retain the producer line in every data
+ file that is created or manipulated using TTL.
+ .
+ Other Usage
+ You can be released from the requirements of the license by purchasing
+ a commercial license. Buying such a license is mandatory as soon as you
+ develop commercial activities involving the TTL library without
+ disclosing the source code of your own applications.
+ .
+ This file may be used in accordance with the terms contained in a
+ written agreement between you and SINTEF ICT.
+
+License: BOOST1
+ Boost Software License - Version 1.0 - August 17th, 2003
+ .
+ Permission is hereby granted, free of charge, to any person or organization
+ obtaining a copy of the software and accompanying documentation covered by
+ this license (the "Software") to use, reproduce, display, distribute,
+ execute, and transmit the Software, and to prepare derivative works of the
+ Software, and to permit third-parties to whom the Software is furnished to
+ do so, all subject to the following:
+ .
+ The copyright notices in the Software and this entire statement, including
+ the above license grant, this restriction and the following disclaimer,
+ must be included in all copies of the Software, in whole or in part, and
+ all derivative works of the Software, unless such copies or derivative
+ works are solely in the form of machine-executable object code generated by
+ a source language processor.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+ SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+ FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+License: Poly2Tri
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ .
+ Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the
+ distribution.  Neither the name of Poly2Tri nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License: GLM1
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+ .
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+
+License: BSD1
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ .
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ .
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ .
+ 3. Neither the name of the copyright holder nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
+ WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
diff --git a/create_kicad_upstream_tarballs.sh b/create_kicad_upstream_tarballs.sh
new file mode 100755 (executable)
index 0000000..b72da2e
--- /dev/null
@@ -0,0 +1,529 @@
+#!/bin/bash
+
+# create_kicad_upstream_tarballs.sh
+# Helper script for creating the needed main and additional tarballs for then
+# kicad source package. Upstream is packing some sourceless and some non DFSG
+# parts into their tarballs. As long as this happen we need to build own DFSG
+# clean tarballs with a additional naming 'dfsg[version]'.
+# The source is separated into the main tarball (1) and additional three
+# parts (2-4):
+#
+# 1. The KiCad GUI soure      ->  kicad_[x]+dfsg[x].orig.tar.xz
+# 2. The KiCad documentation  ->  kicad_[x]+dfsg[x].orig-doc.tar.xz
+# 3. The KiCad localization   ->  kicad_[x]+dfsg[x].orig-18n.tar.xz
+# 4. The KiCad libraries      ->  kicad_[x]+dfsg[x].orig-libraries.tar.xz
+#
+# This script is creating all needed tarballs and checks for non DFSG content.
+# We can filter out more non DFSG related parts while importing with
+# git-buildpackage. See debian/gbp.conf option 'filter'.q
+
+# Initialize our own variables:
+VERBOSE=0
+CURDIR_FULL=`pwd`
+CURDIR=$(basename `pwd`)
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+DFSG=
+WGET_OPTIONS="-nc -c -q"
+# base package name
+SRCPKG="kicad"
+
+# local functions
+usage () {
+cat << EOF
+
+Usage: ${0##*/} [-h|-v] VERSION
+
+    -h         display this help and exit
+    -v         verbose mode, increase the output messages
+
+    [VERSION]  tagged upstream version of KiCad (like a tag '4.0.4')
+
+Examples:
+  ${0##*/} 4.0.4
+
+    Download all the required upstream stuff silently as possible and prepares
+    the needed tarballs in /tmp .
+
+  ${0##*/} -v 4.0.4
+
+    The same as above just with some more output while getting the various
+    upstream archives and on local operations while preparing the needed
+    tarballs. Mostly useful for debugging if something is going wrong.
+
+EOF
+}
+
+debug () {
+if [ "${VERBOSE}" = "1" ]; then
+    echo "DEBUG -> $1"
+fi
+}
+
+fail () {
+    echo $*
+    exit ${EXIT_FAILURE}
+}
+
+print_project_decoration () {
+    echo "# ${1} #"
+    printf '%*s' ${2} | tr ' ' '#'
+    echo
+}
+
+check_sourceless_files () {
+echo
+echo "Checking for non DFSG compliant content in $@ ..."
+SOURCE_SUFFIXES="odt odp odg odm sxw"
+for SCANDIR in $@; do
+    find ${SCANDIR} -name '*.pdf' -print |
+    while read FOUND_FILE; do
+        FOUND_SOURCE=0
+        dir=$(dirname "${FOUND_FILE}")
+        b=$(basename "${FOUND_FILE}")
+        for SUFFIX in ${SOURCE_SUFFIXES}; do
+            # replacing '*.pdf' with pattern
+            SOURCE_PATTERN="${b/.pdf/*.${SUFFIX}}"
+            # counting if we found a pattern match
+            FOUND_PATTERN_COUNT=$(find ${SCANDIR} -iname "${SOURCE_PATTERN}")
+            if [ -n "${FOUND_PATTERN_COUNT}" ]; then
+                ## yes, we found a source file
+                FOUND_SOURCE=1
+            fi
+        done
+        if [ -n "$(find ${SCANDIR} -iname '${b/.pdf/}')" ]; then
+            ## we found a directory
+            FOUND_SOURCE=1
+        fi
+        if [ "${FOUND_SOURCE}" = 0 ]; then
+            debug "Erasing sources binary file: ${FOUND_FILE}" #| tee -a debian/erased_pdfs.log
+            rm "${FOUND_FILE}"
+            # ugly workaround, setting DFSG flag
+            touch ${TMPDIR}/dfsg
+        fi
+    done
+done
+}
+
+########################
+# We are starting here #
+########################
+
+# check for wget and curl
+test -f /usr/bin/wget || fail "wget is missing, please install first!"
+test -f /usr/bin/curl || fail "curl is missing, please install first!"
+
+# check if we are inside kicad/ and have a git environment
+if [ "${CURDIR}" != "${SRCPKG}" ]; then
+    echo "Not in ${SRCPKG}/.."
+    echo "Your are in the correct directory? You currently in ${CURDIR_FULL} !"
+    exit ${EXIT_FAILURE}
+else
+    if [ ! -d .git ]; then
+        echo "no directory .git/ found! You are in the correct directory?"
+        exit ${EXIT_FAILURE}
+    fi
+fi
+
+# we have no options found?
+if [ $(($#)) -lt 1 ]; then
+    echo "You need at least one option!" >&2
+    echo
+    usage ${EXIT_FAILURE}
+fi
+
+OPTIND=1 # Reset is necessary if getopts was used previously in the script. It is a good idea to make this local in a function.
+while getopts "hv?" opt; do
+    case "$opt" in
+        h)  HELP=1
+            usage
+            exit
+            ;;
+        v)  echo "[[ ... using verbose mode ... ]]"
+            VERBOSE=1
+            # make wget a bit more noisy
+            WGET_OPTIONS="-nc -c"
+            ;;
+        '?')
+            usage >&2
+            exit 1
+            ;;
+    esac
+done
+
+# shift found options
+shift $(( OPTIND - 1 ))
+
+# looping the arguments, we should have at least only one without an option!
+for ARG; do
+    ARG_COUNT=`expr ${ARG_COUNT} + 1`
+    debug "given argument: ${ARG}"
+    debug "ARG_COUNT = ${ARG_COUNT}"
+done
+
+# if there is no argument left or given error out!
+if [ "${ARG_COUNT}" = "0" -o "${ARG_COUNT}" = "" ]; then
+    echo "missing argument for VERSION!"
+    exit ${EXIT_FAILURE}
+
+# we have to many arguments, error out
+elif [ "${ARG_COUNT}" != "1" ]; then
+    echo "${ARG_COUNT}"
+    echo "more than one argument for VERSION given!"
+    exit ${EXIT_FAILURE}
+fi
+
+# o.k. the last argument should be the version
+VERSION=${ARG}
+# check for a valid version
+if [[ ${VERSION} = *.*.* ]]; then
+    # splitting the given version
+    KICAD_MINOR_MICRO=${VERSION#*.}
+    KICAD_MAJOR=${VERSION%.*.*}
+    KICAD_MICRO=${KICAD_MINOR_MICRO#*.}
+    KICAD_MINOR=${KICAD_MINOR_MICRO%.*}
+else
+    echo "The given Version '${VERSION}' looks quite unusual!"
+    echo "Will do nothing!"
+    exit ${EXIT_FAILURE}
+fi
+# more insane checking
+if [ "${KICAD_MAJOR}" = "" -o "${KICAD_MINOR}" = "" -o "${KICAD_MICRO}" = "" ]; then
+    echo "There is something wrong with the given version!"
+    exit ${EXIT_FAILURE}
+fi
+
+TMPDIR=/tmp/${SRCPKG}-tmp
+TARBALLDIR=${TMPDIR}/tarballs
+UPSTREAM_LIBRARIES=${TMPDIR}/libraries
+
+# create temporary folder for data collection
+mkdir -p ${TMPDIR}
+mkdir -p ${TARBALLDIR}
+mkdir -p ${UPSTREAM_LIBRARIES}
+
+echo
+
+#######################################################
+# collecting and preparing data for KiCad GUI tarball #
+#######################################################
+
+# On Launchpad we got a URL which uses Major.Minor subdirectories e.g.
+# https://launchpad.net/kicad/4.0/4.0.4/+download/kicad-4.0.4.tar.xz
+KICAD_MAIN_BASE_DL="https://launchpad.net/${SRCPKG}/${KICAD_MAJOR}.${KICAD_MINOR}/${VERSION}"
+# On GitHub we can simply query the released tags.
+KICAD_SECOND_BASE_DL="https://github.com/KiCad/${SRCPKG}-source-mirror/tags"
+# The default download will be made on Launchpad, otherwise the value will before
+# overriden later.
+KICAD_MAIN_DL="${KICAD_MAIN_BASE_DL}/+download/${SRCPKG}-${VERSION}.tar.xz"
+# The name of the tarball we gonna downloading and saving.
+KICAD_UPSTREAM_TARBALL=${TARBALLDIR}/${SRCPKG}-${VERSION}.tar.xz
+
+# We could probably check if we already have downloaded some valid archive.
+# This would complicate the script with no valuable gain, wget is later
+# smart enough to detect if a download is really needed.
+
+echo "Trying to load KiCad version ${VERSION} ..."
+
+# check if we can find a given version on Launchpad
+RET=`curl -L --silent ${KICAD_MAIN_BASE_DL} | grep ${VERSION} | tr ' ' '\n' | grep "tar.xz</a>"`
+if [ "$?" = "0" -a "${RET}" != "" ]; then
+    debug "Found a valid download on ${KICAD_MAIN_BASE_DL} ..."
+    TAR_OPT="xJf"
+else
+    echo "Couldn't find KiCad version ${VERSION} on Launchpad!"
+    echo "Tried to find a valid dowload on '${KICAD_MAIN_BASE_DL}'. Going further and trying a download on GitHub."
+
+    # check if we can find a given version on GitHub
+    # The KiCad repository on GitHub uses also tag based download URLs
+    # e.g. https://github.com/KiCad/kicad/archive/4.0.4.tar.gz, to check this
+    # we need parse the available tags on https://github.com/KiCad/kicad-source-mirror/tags
+    # GitHub isn't providing *.xz archives!
+    RET=`curl -L --silent ${KICAD_SECOND_BASE_DL} | grep ${VERSION} | tr ' ' '\n' | grep "tar.gz"`
+    if [ "$?" = "0" -a "${RET}" != "" ]; then
+        debug "Found a valid dowload on ${KICAD_SECOND_BASE_DL}"
+        KICAD_MAIN_DL="github.com/KiCad/${SRCPKG}/archive/${VERSION}.tar.gz"
+        KICAD_UPSTREAM_TARBALL=${TARBALLDIR}/${SRCPKG}-${VERSION}.tar.gz
+        TAR_OPT="xzf"
+    else
+        echo "Couldn't find KiCad version ${VERSION} on GitHub!"
+        echo "Tried to find a valid download on '${KICAD_SECOND_BASE_DL}'."
+        echo "Maybe the '${VERSION}' isn't yet released or misspelled?"
+        echo
+        exit 1
+    fi
+fi
+wget ${WGET_OPTIONS} ${KICAD_MAIN_DL} -O ${KICAD_UPSTREAM_TARBALL}
+debug "create ${TMPDIR}/${SRCPKG}-${VERSION}"
+mkdir -p ${TMPDIR}/${SRCPKG}-${VERSION}
+debug "extracting ${KICAD_UPSTREAM_TARBALL} into ${TMPDIR}/${SRCPKG}-${VERSION} ... "
+rm -rf ${TMPDIR}/${SRCPKG}-${VERSION}/*
+tar ${TAR_OPT} ${KICAD_UPSTREAM_TARBALL} --strip-components=1 -C ${TMPDIR}/${SRCPKG}-${VERSION}
+echo "Done"
+
+# checking if we need DFSG cleanout, some binary documents may have no sources
+check_sourceless_files ${TMPDIR}/${SRCPKG}-${VERSION}/Documentation ${TMPDIR}/${SRCPKG}-${VERSION}/pcb_calculator
+if [ -f ${TMPDIR}/dfsg ]; then
+    DFSG="+dfsg1"
+fi
+
+# checking for CC-BY-2.0 licensed files, they not DFSG compatible
+echo "Searching for CC-BY-2.0 licensed files ..."
+for CC2_FILE_A in $(grep -l 'creativecommons.*by.*2\.0' ${TMPDIR}/${SRCPKG}-${VERSION}/bitmaps_png/sources/*.svg); do
+    rm ${CC2_FILE_A}
+    CC2_FILE_B=$(basename ${CC2_FILE_A}| sed 's/svg$/cpp/')
+    find ${TMPDIR}/${SRCPKG}-${VERSION}/bitmaps_png -name ${CC2_FILE_B} -exec rm {} \;
+    debug "removed ${CC2_FILE_A}"
+    debug "removed ${TMPDIR}/${SRCPKG}-${VERSION}/bitmaps_png/cpp_26/${CC2_FILE_B}"
+done
+echo
+
+#################################################################
+# collecting and preparing data for KiCad documentation tarball #
+#################################################################
+
+# The documentation repository is on GitHub and got tags we can use for
+# downloading. e.g. https://github.com/KiCad/kicad-doc/archive/4.0.4.tar.gz
+
+KICAD_DOC_TAGS_URL="https://github.com/KiCad/${SRCPKG}-doc/tags"
+KICAD_DOC_DL="github.com/KiCad/${SRCPKG}-doc/archive/${VERSION}.tar.gz"
+KICAD_DOC_TARBALL=${TARBALLDIR}/${SRCPKG}-doc-${VERSION}.tar.gz
+
+echo "Trying to load KiCad Documentation ${VERSION} ..."
+# check if we can find a given version on GitHub
+RET=`curl -L --silent ${KICAD_DOC_TAGS_URL} | grep ${VERSION}.tar.gz | awk '{print $2}' | tr '<>"' ' ' | awk '{print $2}'`
+if [ "$RET" != "" ]; then
+    wget ${WGET_OPTIONS} ${KICAD_DOC_DL} -O ${KICAD_DOC_TARBALL}
+    debug "create ${TMPDIR}/doc"
+    mkdir -p ${TMPDIR}/doc
+    debug "extracting ${KICAD_DOC_TARBALL} into ${TMPDIR}/doc ... "
+    rm -rf ${TMPDIR}/doc/*
+    tar xzf ${KICAD_DOC_TARBALL} --strip-components=1 -C ${TMPDIR}/doc
+    echo "Done"
+else
+    echo "Couldn't find kicad-doc version ${VERSION} on GitHub!"
+    echo "Tried to find a valid download on '${KICAD_DOC_TAGS_URL}'."
+    echo "Maybe '${VERSION}' isn't yet released or misspelled?"
+    echo
+    exit 1
+fi
+
+# checking if we need DFSG cleanout, some binary documents may have no sources
+check_sourceless_files ${TMPDIR}/doc
+if [ -f ${TMPDIR}/dfsg ]; then
+    DFSG="+dfsg1"
+fi
+echo
+
+###########################################################
+# collecting and preparing data for the KiCad 18n tarball #
+###########################################################
+
+# The i18n repository is on GitHub and got tags we can use for
+# downloading. e.g. https://github.com/KiCad/kicad-i18n/archive/4.0.4.tar.gz
+
+KICAD_I18N_TAGS_URL="https://github.com/KiCad/${SRCPKG}-i18n/tags"
+KICAD_I18N_DL="github.com/KiCad/${SRCPKG}-i18n/archive/${VERSION}.tar.gz"
+KICAD_I18N_TARBALL=${TARBALLDIR}/${SRCPKG}-i18n-${VERSION}.tar.gz
+
+echo "Trying to load KiCad i18n ${VERSION} ..."
+# check if we can find a given version on GitHub
+RET=`curl -L --silent ${KICAD_I18N_TAGS_URL} | grep ${VERSION}.tar.gz | awk '{print $2}' | tr '<>"' ' ' | awk '{print $2}'`
+if [ "$RET" != "" ]; then
+    wget ${WGET_OPTIONS} ${KICAD_I18N_DL} -O ${KICAD_I18N_TARBALL}
+    debug "create ${TMPDIR}/i18n"
+    mkdir -p ${TMPDIR}/i18n
+    debug "extracting ${KICAD_I18N_TARBALL} into ${TMPDIR}/i18n ... "
+    rm -rf ${TMPDIR}/i18n/*
+    tar xzf ${KICAD_I18N_TARBALL} --strip-components=1 -C ${TMPDIR}/i18n
+    echo "Done"
+else
+    echo "Couldn't find kicad-i18n version ${VERSION} on GitHub!"
+    echo "Tried to find a valid download on '${KICAD_I18N_TAGS_URL}'."
+    echo "Maybe '${VERSION}' isn't yet released or misspelled?"
+    echo
+    exit 1
+fi
+
+# checking if we need DFSG cleanout, some binary documents may have no sources
+check_sourceless_files ${TMPDIR}/i18n
+if [ -f ${TMPDIR}/dfsg ]; then
+    DFSG="+dfsg1"
+fi
+echo
+
+#################################################################
+# collecting and preparing data for the KiCad libraries tarball #
+#################################################################
+
+# The various component, footprint and 3D-model libraries are available one
+# GitHub in various repositories. Uncomment the following two lines to get
+# a dynamically created list of repositories. Otherwise it's currently better
+# to use the static list as some repositories currently empty like:
+# Connectors_Amphenol.pretty
+
+#PRETTY_REPOS=$(curl https://api.github.com/orgs/KiCad/repos?per_page=2000 2> /dev/null | sed -r 's:.+ "full_name".*"KiCad/(.+\.pretty)",:\1:p;d')
+#PRETTY_REPOS=$(echo $PRETTY_REPOS | tr " " "\n" | sort)
+
+PRETTY_REPOS="\
+Air_Coils_SML_NEOSID.pretty
+Battery_Holders.pretty
+Buttons_Switches_SMD.pretty
+Buttons_Switches_ThroughHole.pretty
+Buzzers_Beepers.pretty
+Capacitors_SMD.pretty
+Capacitors_Tantalum_SMD.pretty
+Capacitors_ThroughHole.pretty
+Choke_Axial_ThroughHole.pretty
+Choke_Common-Mode_Wurth.pretty
+Choke_Radial_ThroughHole.pretty
+Choke_SMD.pretty
+Choke_Toroid_ThroughHole.pretty
+Connectors_Harwin.pretty
+Connectors_Hirose.pretty
+Connectors_JAE.pretty
+Connectors_JST.pretty
+Connectors_Molex.pretty
+Connectors_Multicomp.pretty
+Connectors_Phoenix.pretty
+Connectors_Samtec.pretty
+Connectors_TE-Connectivity.pretty
+Connect.pretty
+Converters_DCDC_ACDC.pretty
+Crystals.pretty
+Diodes_SMD.pretty
+Diodes_ThroughHole.pretty
+Discret.pretty
+Display.pretty
+Displays_7-Segment.pretty
+Divers.pretty
+EuroBoard_Outline.pretty
+Fiducials.pretty
+Filters_HF_Coils_NEOSID.pretty
+Fuse_Holders_and_Fuses.pretty
+Hall-Effect_Transducers_LEM.pretty
+Heatsinks.pretty
+Housings_DFN_QFN.pretty
+Housings_DIP.pretty
+Housings_QFP.pretty
+Housings_SIP.pretty
+Housings_SOIC.pretty
+Housings_SSOP.pretty
+Inductors_NEOSID.pretty
+Inductors.pretty
+IR-DirectFETs.pretty
+Labels.pretty
+LEDs.pretty
+Measurement_Points.pretty
+Measurement_Scales.pretty
+Mechanical_Sockets.pretty
+Microwave.pretty
+Mounting_Holes.pretty
+NF-Transformers_ETAL.pretty
+Oddities.pretty
+Opto-Devices.pretty
+Oscillators.pretty
+PFF_PSF_PSS_Leadforms.pretty
+Pin_Headers.pretty
+Potentiometers.pretty
+Power_Integrations.pretty
+Relays_ThroughHole.pretty
+Resistors_SMD.pretty
+Resistors_ThroughHole.pretty
+Resistors_Universal.pretty
+RF_Modules.pretty
+Shielding_Cabinets.pretty
+SMD_Packages.pretty
+Sockets_BNC.pretty
+Sockets_Mini-Universal.pretty
+Sockets_MOLEX_KK-System.pretty
+Sockets.pretty
+Socket_Strips.pretty
+Sockets_WAGO734.pretty
+Symbols.pretty
+Terminal_Blocks.pretty
+TO_SOT_Packages_SMD.pretty
+TO_SOT_Packages_THT.pretty
+Transformers_CHK.pretty
+Transformers_SMPS_ThroughHole.pretty
+Transistors_OldSowjetAera.pretty
+Valves.pretty
+Varistors.pretty
+Wire_Connections_Bridges.pretty
+Wire_Pads.pretty
+"
+
+# uncomment the follwing variable if you not want to load the long list in
+# case for testing something. Booth repositories are different as one has a
+# taged versions, the other don't.
+#PRETTY_REPOS="\
+#Air_Coils_SML_NEOSID.pretty
+#Battery_Holders.pretty"
+
+for PROJECT in kicad-library $PRETTY_REPOS; do
+#for PROJECT in $PRETTY_REPOS; do
+    print_project_decoration $PROJECT $(expr 4 + ${#PROJECT})
+    # check first if we can get a tagged archive, otherwise we take the current master
+    RET=`curl -L --silent https://github.com/KiCad/${PROJECT}/tags | grep ${VERSION}.tar.gz | awk '{print $2}' | tr '<>"' ' ' | awk '{print $2}'`
+    if [ "$RET" != "" ]; then
+        echo "Trying to load tagged version ${VERSION}."
+        wget ${WGET_OPTIONS} https://github.com/KiCad/${PROJECT}/archive/${VERSION}.tar.gz -O ${TARBALLDIR}/${PROJECT}-${VERSION}.tar.gz
+        debug "create ${UPSTREAM_LIBRARIES}/${PROJECT}"
+        mkdir -p ${UPSTREAM_LIBRARIES}/${PROJECT}
+        debug "extracting ${TARBALLDIR}/${PROJECT}-${VERSION}.tar.gz into ${UPSTREAM_LIBRARIES}/${PROJECT} ... "
+        rm -rf ${UPSTREAM_LIBRARIES}/${PROJECT}/*
+        tar xzf ${TARBALLDIR}/${PROJECT}-${VERSION}.tar.gz --strip-components=1 -C ${UPSTREAM_LIBRARIES}/${PROJECT}
+        echo "Done"
+    else
+        echo "No tagged version found, trying master instead."
+        wget ${WGET_OPTIONS} https://github.com/KiCad/${PROJECT}/archive/master.tar.gz -O ${TARBALLDIR}/${PROJECT}.master.tar.gz
+        debug "create ${UPSTREAM_LIBRARIES}/${PROJECT}"
+        mkdir -p ${UPSTREAM_LIBRARIES}/${PROJECT}
+        debug "extracting ${TARBALLDIR}/${PROJECT}.master.tar.gz into ${UPSTREAM_LIBRARIES}/${PROJECT} ... "
+        rm -rf ${UPSTREAM_LIBRARIES}/${PROJECT}/*
+        tar xzf ${TARBALLDIR}/${PROJECT}.master.tar.gz --strip-components=1 -C ${UPSTREAM_LIBRARIES}/${PROJECT}
+        echo "Done"
+    fi
+    echo
+done
+
+# cleaning out VCS control files, don't care about not to scanned folders
+echo "removing VCS related control files before packing tarballs ..."
+for CLEANING in `find ${TMPDIR} -type f \( -name ".gitignore" -o -name "*.bzrignore" \)`; do
+    debug "remove ${CLEANING}"
+    rm ${CLEANING}
+done
+echo
+
+#########################
+# building the tarballs #
+#########################
+
+# create ${SRCPKG}_${VERSION}${DFSG}.orig-libraries.tar.xz
+echo "building ${TMPDIR}/${SRCPKG}_${VERSION}${DFSG}.orig.tar.xz"
+cd ${TMPDIR}/${SRCPKG}-${VERSION} ;\
+rm -f ../${SRCPKG}_${VERSION}${DFSG}.orig.tar.xz ;\
+tar -Jcf ../${SRCPKG}_${VERSION}${DFSG}.orig.tar.xz . ;\
+#ls -la ../${SRCPKG}_${VERSION}${DFSG}.orig.tar.xz
+
+# create ${SRCPKG}_${VERSION}${DFSG}.orig-libraries.tar.xz
+echo "building ${TMPDIR}/${SRCPKG}_${VERSION}${DFSG}.orig-doc.tar.xz"
+cd ${TMPDIR} ;\
+rm -f ${SRCPKG}_${VERSION}${DFSG}.orig-doc.tar.xz ;\
+tar -Jcf ${SRCPKG}_${VERSION}${DFSG}.orig-doc.tar.xz doc/ ;\
+#ls -la ${SRCPKG}_${VERSION}${DFSG}.orig-doc.tar.xz
+
+# create ${SRCPKG}_${VERSION}${DFSG}.orig-libraries.tar.xz
+echo "building ${TMPDIR}/${SRCPKG}_${VERSION}${DFSG}.orig-i18n.tar.xz"
+cd ${TMPDIR} ;\
+rm -f ${SRCPKG}_${VERSION}${DFSG}.orig-i18n.tar.xz ;\
+tar -Jcf ${SRCPKG}_${VERSION}${DFSG}.orig-i18n.tar.xz i18n/ ;\
+#ls -la ${SRCPKG}_${VERSION}${DFSG}.orig-i18n.tar.xz
+
+# create ${SRCPKG}_${VERSION}${DFSG}.orig-libraries.tar.xz
+echo "building ${TMPDIR}/${SRCPKG}_${VERSION}${DFSG}.orig-libraries.tar.xz"
+cd ${TMPDIR} ;\
+tar -Jcf ${SRCPKG}_${VERSION}${DFSG}.orig-libraries.tar.xz libraries/ ;\
+#ls -la ${SRCPKG}_${VERSION}${DFSG}.orig-libraries.tar.xz
+
+exit ${EXIT_SUCCESS}
diff --git a/gbp.conf b/gbp.conf
new file mode 100644 (file)
index 0000000..1ba29ac
--- /dev/null
+++ b/gbp.conf
@@ -0,0 +1,21 @@
+# Configuration file for git-buildpackage and friends
+
+[DEFAULT]
+compression = xz
+debian-branch = debian/sid
+upstream-branch = upstream
+components = [ 'doc', 'i18n', 'libraries', ]
+pristine-tar = True
+
+[pq]
+patch-numbers = False
+
+[dch]
+id-length = 7
+debian-branch = debian/sid
+
+[import-orig]
+# filter out unwanted files/dirs from upstream
+filter = [ '.bzrignore', '*.gitignore', ]
+# filter the files out of the tarball passed to pristine-tar
+filter-pristine-tar = True
diff --git a/kicad-common.install b/kicad-common.install
new file mode 100644 (file)
index 0000000..125adf2
--- /dev/null
@@ -0,0 +1,8 @@
+# install the *.pretty directories
+libraries/*.pretty           usr/share/kicad/modules
+usr/share/doc/kicad/scripts
+usr/share/icons
+usr/share/kicad
+usr/share/locale
+usr/share/mime
+usr/share/mimelnk
diff --git a/kicad-common.links b/kicad-common.links
new file mode 100644 (file)
index 0000000..18314f3
--- /dev/null
@@ -0,0 +1,2 @@
+# source                                          # target
+usr/share/kicad/template/fp-lib-table.for-pretty  usr/share/kicad/template/fp-lib-table
diff --git a/kicad-common.lintian-overrides b/kicad-common.lintian-overrides
new file mode 100644 (file)
index 0000000..dfe6e8a
--- /dev/null
@@ -0,0 +1,2 @@
+# the warning is true, but we depend on arch specific package python
+kicad-common: package-contains-no-arch-dependent-files
diff --git a/kicad-doc-ca.doc-base b/kicad-doc-ca.doc-base
new file mode 100644 (file)
index 0000000..895c0f3
--- /dev/null
@@ -0,0 +1,15 @@
+Document: kicad-doc-ca
+Title: Various KiCad documentation
+Author: KiCad developer and contributers
+Abstract: Documentation and Manuals for the KiCad EDA suite that was build
+ from the provided source.
+Section: Help/HOWTO
+
+Format: HTML
+Index: /usr/share/doc/kicad/help/ca/
+Files: /usr/share/doc/kicad/help/ca/*.html
+       /usr/share/doc/kicad/help/ca/images/*
+
+Format: PDF
+Files: /usr/share/doc/kicad/help/ca/getting_started_in_kicad.pdf.gz
+       /usr/share/doc/kicad/help/ca/kicad.pdf.gz
diff --git a/kicad-doc-ca.install b/kicad-doc-ca.install
new file mode 100644 (file)
index 0000000..0c1f1de
--- /dev/null
@@ -0,0 +1 @@
+usr/share/doc/kicad/help/ca
diff --git a/kicad-doc-de.doc-base b/kicad-doc-de.doc-base
new file mode 100644 (file)
index 0000000..275d13f
--- /dev/null
@@ -0,0 +1,21 @@
+Document: kicad-doc-de
+Title: Various KiCad documentation
+Author: KiCad developer and contributers
+Abstract: Documentation and Manuals for the KiCad EDA suite that was build
+ from the provided source.
+Section: Help/HOWTO
+
+Format: HTML
+Index: /usr/share/doc/kicad/help/de/
+Files: /usr/share/doc/kicad/help/de/*.html
+       /usr/share/doc/kicad/help/de/images/*
+
+Format: PDF
+Files: /usr/share/doc/kicad/help/de/cvpcb.pdf.gz
+       /usr/share/doc/kicad/help/de/eeschema.pdf.gz
+       /usr/share/doc/kicad/help/de/gerbview.pdf.gz
+       /usr/share/doc/kicad/help/de/getting_started_in_kicad.pdf.gz
+       /usr/share/doc/kicad/help/de/idf_exporter.pdf.gz
+       /usr/share/doc/kicad/help/de/kicad.pdf.gz
+       /usr/share/doc/kicad/help/de/pcbnew.pdf.gz
+       /usr/share/doc/kicad/help/de/pl_editor.pdf.gz
diff --git a/kicad-doc-de.install b/kicad-doc-de.install
new file mode 100644 (file)
index 0000000..866f8cc
--- /dev/null
@@ -0,0 +1 @@
+usr/share/doc/kicad/help/de
diff --git a/kicad-doc-en.doc-base b/kicad-doc-en.doc-base
new file mode 100644 (file)
index 0000000..4c88035
--- /dev/null
@@ -0,0 +1,23 @@
+Document: kicad-doc-en
+Title: Various KiCad documentation
+Author: KiCad developer and contributers
+Abstract: Documentation and Manuals for the KiCad EDA suite that was build
+ from the provided source.
+Section: Help/HOWTO
+
+Format: HTML
+Index: /usr/share/doc/kicad/help/en/
+Files: /usr/share/doc/kicad/help/en/*.html
+       /usr/share/doc/kicad/help/en/images/*
+
+Format: PDF
+Files: /usr/share/doc/kicad/help/en/cvpcb.pdf.gz
+       /usr/share/doc/kicad/help/en/eeschema.pdf.gz
+       /usr/share/doc/kicad/help/en/gerbview.pdf.gz
+       /usr/share/doc/kicad/help/en/getting_started_in_kicad.pdf.gz
+       /usr/share/doc/kicad/help/en/gui_translation_howto.pdf.gz
+       /usr/share/doc/kicad/help/en/idf_exporter.pdf.gz
+       /usr/share/doc/kicad/help/en/kicad.pdf.gz
+       /usr/share/doc/kicad/help/en/pcbnew.pdf.gz
+       /usr/share/doc/kicad/help/en/pl_editor.pdf.gz
+       /usr/share/doc/kicad/help/en/plugins.pdf.gz
diff --git a/kicad-doc-en.install b/kicad-doc-en.install
new file mode 100644 (file)
index 0000000..35a4fc6
--- /dev/null
@@ -0,0 +1 @@
+usr/share/doc/kicad/help/en
diff --git a/kicad-doc-es.doc-base b/kicad-doc-es.doc-base
new file mode 100644 (file)
index 0000000..c83951b
--- /dev/null
@@ -0,0 +1,20 @@
+Document: kicad-doc-es
+Title: Various KiCad documentation
+Author: KiCad developer and contributers
+Abstract: Documentation and Manuals for the KiCad EDA suite that was build
+ from the provided source.
+Section: Help/HOWTO
+
+Format: HTML
+Index: /usr/share/doc/kicad/help/es/
+Files: /usr/share/doc/kicad/help/es/*.html
+       /usr/share/doc/kicad/help/es/images/*
+
+Format: PDF
+Files: /usr/share/doc/kicad/help/es/cvpcb.pdf.gz
+       /usr/share/doc/kicad/help/es/eeschema.pdf.gz
+       /usr/share/doc/kicad/help/es/gerbview.pdf.gz
+       /usr/share/doc/kicad/help/es/getting_started_in_kicad.pdf.gz
+       /usr/share/doc/kicad/help/es/kicad.pdf.gz
+       /usr/share/doc/kicad/help/es/pcbnew.pdf.gz
+       /usr/share/doc/kicad/help/es/pl_editor.pdf.gz
diff --git a/kicad-doc-es.install b/kicad-doc-es.install
new file mode 100644 (file)
index 0000000..8be6d05
--- /dev/null
@@ -0,0 +1 @@
+usr/share/doc/kicad/help/es
diff --git a/kicad-doc-fr.doc-base b/kicad-doc-fr.doc-base
new file mode 100644 (file)
index 0000000..6b7884a
--- /dev/null
@@ -0,0 +1,19 @@
+Document: kicad-doc-fr
+Title: Various KiCad documentation
+Author: KiCad developer and contributers
+Abstract: Documentation and Manuals for the KiCad EDA suite that was build
+ from the provided source.
+Section: Help/HOWTO
+
+Format: HTML
+Index: /usr/share/doc/kicad/help/fr/
+Files: /usr/share/doc/kicad/help/fr/*.html
+       /usr/share/doc/kicad/help/fr/images/*
+
+Format: PDF
+Files: /usr/share/doc/kicad/help/fr/cvpcb.pdf.gz
+       /usr/share/doc/kicad/help/fr/eeschema.pdf.gz
+       /usr/share/doc/kicad/help/fr/getting_started_in_kicad.pdf.gz
+       /usr/share/doc/kicad/help/fr/kicad.pdf.gz
+       /usr/share/doc/kicad/help/fr/pcbnew.pdf.gz
+       /usr/share/doc/kicad/help/fr/pl_editor.pdf.gz
diff --git a/kicad-doc-fr.install b/kicad-doc-fr.install
new file mode 100644 (file)
index 0000000..7e78daf
--- /dev/null
@@ -0,0 +1 @@
+usr/share/doc/kicad/help/fr
diff --git a/kicad-doc-hu.install b/kicad-doc-hu.install
new file mode 100644 (file)
index 0000000..fc0eaf6
--- /dev/null
@@ -0,0 +1,2 @@
+doc/doc/tutorials/hu/*.pdf usr/share/doc/kicad/tutorials/hu
+# doc/doc/help/hu/*.pdf usr/share/doc/kicad/help/hu
diff --git a/kicad-doc-it.doc-base b/kicad-doc-it.doc-base
new file mode 100644 (file)
index 0000000..592cb72
--- /dev/null
@@ -0,0 +1,21 @@
+Document: kicad-doc-it
+Title: Various KiCad documentation
+Author: KiCad developer and contributers
+Abstract: Documentation and Manuals for the KiCad EDA suite that was build
+ from the provided source.
+Section: Help/HOWTO
+
+Format: HTML
+Index: /usr/share/doc/kicad/help/it/
+Files: /usr/share/doc/kicad/help/it/*.html
+       /usr/share/doc/kicad/help/it/images/*
+
+Format: PDF
+Files: /usr/share/doc/kicad/help/it/cvpcb.pdf.gz
+       /usr/share/doc/kicad/help/it/eeschema.pdf.gz
+       /usr/share/doc/kicad/help/it/gerbview.pdf.gz
+       /usr/share/doc/kicad/help/it/getting_started_in_kicad.pdf.gz
+       /usr/share/doc/kicad/help/it/idf_exporter.pdf.gz
+       /usr/share/doc/kicad/help/it/kicad.pdf.gz
+       /usr/share/doc/kicad/help/it/pcbnew.pdf.gz
+       /usr/share/doc/kicad/help/it/pl_editor.pdf.gz
diff --git a/kicad-doc-it.install b/kicad-doc-it.install
new file mode 100644 (file)
index 0000000..ae98c3e
--- /dev/null
@@ -0,0 +1 @@
+usr/share/doc/kicad/help/it
diff --git a/kicad-doc-ja.doc-base b/kicad-doc-ja.doc-base
new file mode 100644 (file)
index 0000000..0529c45
--- /dev/null
@@ -0,0 +1,21 @@
+Document: kicad-doc-ja
+Title: Various KiCad documentation
+Author: KiCad developer and contributers
+Abstract: Documentation and Manuals for the KiCad EDA suite that was build
+ from the provided source.
+Section: Help/HOWTO
+
+Format: HTML
+Index: /usr/share/doc/kicad/help/ja/
+Files: /usr/share/doc/kicad/help/ja/*.html
+       /usr/share/doc/kicad/help/ja/images/*
+
+Format: PDF
+Files: /usr/share/doc/kicad/help/ja/cvpcb.pdf.gz
+       /usr/share/doc/kicad/help/ja/eeschema.pdf.gz
+       /usr/share/doc/kicad/help/ja/gerbview.pdf.gz
+       /usr/share/doc/kicad/help/ja/getting_started_in_kicad.pdf.gz
+       /usr/share/doc/kicad/help/ja/idf_exporter.pdf.gz
+       /usr/share/doc/kicad/help/ja/kicad.pdf.gz
+       /usr/share/doc/kicad/help/ja/pcbnew.pdf.gz
+       /usr/share/doc/kicad/help/ja/pl_editor.pdf.gz
diff --git a/kicad-doc-ja.install b/kicad-doc-ja.install
new file mode 100644 (file)
index 0000000..aa66f08
--- /dev/null
@@ -0,0 +1 @@
+usr/share/doc/kicad/help/ja
diff --git a/kicad-doc-nl.doc-base b/kicad-doc-nl.doc-base
new file mode 100644 (file)
index 0000000..bd5bedf
--- /dev/null
@@ -0,0 +1,13 @@
+Document: kicad-doc-nl
+Title: Various KiCad documentation
+Author: KiCad developer and contributers
+Abstract: Documentation and Manuals for the KiCad EDA suite that was build
+ from the provided source.
+Section: Help/HOWTO
+
+Format: HTML
+Index: /usr/share/doc/kicad/help/nl/
+Files: /usr/share/doc/kicad/help/nl/*.html
+
+Format: PDF
+Files: /usr/share/doc/kicad/help/nl/getting_started_in_kicad.pdf.gz
diff --git a/kicad-doc-nl.install b/kicad-doc-nl.install
new file mode 100644 (file)
index 0000000..d4e56a7
--- /dev/null
@@ -0,0 +1 @@
+usr/share/doc/kicad/help/nl
diff --git a/kicad-doc-pl.doc-base b/kicad-doc-pl.doc-base
new file mode 100644 (file)
index 0000000..dac9da1
--- /dev/null
@@ -0,0 +1,21 @@
+Document: kicad-doc-pl
+Title: Various KiCad documentation
+Author: KiCad developer and contributers
+Abstract: Documentation and Manuals for the KiCad EDA suite that was build
+ from the provided source.
+Section: Help/HOWTO
+
+Format: HTML
+Index: /usr/share/doc/kicad/help/pl/
+Files: /usr/share/doc/kicad/help/pl/*.html
+       /usr/share/doc/kicad/help/pl/images/*
+
+Format: PDF
+Files: /usr/share/doc/kicad/help/pl/cvpcb.pdf.gz
+       /usr/share/doc/kicad/help/pl/eeschema.pdf.gz
+       /usr/share/doc/kicad/help/pl/gerbview.pdf.gz
+       /usr/share/doc/kicad/help/pl/getting_started_in_kicad.pdf.gz
+       /usr/share/doc/kicad/help/pl/idf_exporter.pdf.gz
+       /usr/share/doc/kicad/help/pl/kicad.pdf.gz
+       /usr/share/doc/kicad/help/pl/pcbnew.pdf.gz
+       /usr/share/doc/kicad/help/pl/pl_editor.pdf.gz
diff --git a/kicad-doc-pl.install b/kicad-doc-pl.install
new file mode 100644 (file)
index 0000000..7e9cfd2
--- /dev/null
@@ -0,0 +1 @@
+usr/share/doc/kicad/help/pl
diff --git a/kicad-doc-pt.install b/kicad-doc-pt.install
new file mode 100644 (file)
index 0000000..f43d200
--- /dev/null
@@ -0,0 +1 @@
+doc/doc/help/pt/*.pdf usr/share/doc/kicad/help/pt
diff --git a/kicad-doc-ru.doc-base b/kicad-doc-ru.doc-base
new file mode 100644 (file)
index 0000000..3ef4002
--- /dev/null
@@ -0,0 +1,19 @@
+Document: kicad-doc-ru
+Title: Various KiCad documentation
+Author: KiCad developer and contributers
+Abstract: Documentation and Manuals for the KiCad EDA suite that was build
+ from the provided source.
+Section: Help/HOWTO
+
+Format: HTML
+Index: /usr/share/doc/kicad/help/ru/
+Files: /usr/share/doc/kicad/help/ru/*.html
+       /usr/share/doc/kicad/help/ru/images/*
+
+Format: PDF
+Files: /usr/share/doc/kicad/help/ru/cvpcb.pdf.gz
+       /usr/share/doc/kicad/help/ru/gerbview.pdf.gz
+       /usr/share/doc/kicad/help/ru/getting_started_in_kicad.pdf.gz
+       /usr/share/doc/kicad/help/ru/idf_exporter.pdf.gz
+       /usr/share/doc/kicad/help/ru/kicad.pdf.gz
+       /usr/share/doc/kicad/help/ru/pl_editor.pdf.gz
diff --git a/kicad-doc-ru.install b/kicad-doc-ru.install
new file mode 100644 (file)
index 0000000..391f334
--- /dev/null
@@ -0,0 +1 @@
+usr/share/doc/kicad/help/ru
diff --git a/kicad-doc-zh-cn.install b/kicad-doc-zh-cn.install
new file mode 100644 (file)
index 0000000..498f164
--- /dev/null
@@ -0,0 +1 @@
+doc/doc/tutorials/zh_CN/*.pdf usr/share/doc/kicad/tutorials/zh_CN
diff --git a/kicad.desktop b/kicad.desktop
new file mode 100644 (file)
index 0000000..43dd35f
--- /dev/null
@@ -0,0 +1,19 @@
+[Desktop Entry]
+Name=KiCad
+Comment=Create/Modify/View of PCB's
+GenericName=EDA Software Suite
+Exec=kicad %f
+Terminal=false
+X-MultipleArgs=false
+Type=Application
+Icon=kicad
+Categories=Science;Education;Development;Electronics;
+MimeType=application/x-kicad-project;
+StartupWMClass=KiCad
+StartupNotify=true
+Name[de]=Entwicklung und Bearbeiten von PCB's mit KiCad
+Name[fr]=Suite logicielle de conception Ã©lectronique
+Comment[de]=Entwicklung von gedruckten elektronsichen Schaltungen
+Comment[fr]=Concevoir un circuit imprimé
+GenericName[de]=EDA Software Lösung
+Keywords=EDA,KiCad,Kicad,
diff --git a/kicad.install b/kicad.install
new file mode 100644 (file)
index 0000000..b44f0c6
--- /dev/null
@@ -0,0 +1,22 @@
+bitmaps_png/icons/kicad.xpm      usr/share/pixmaps
+usr/bin/_cvpcb.kiface            usr/lib/kicad
+usr/bin/_eeschema.kiface         usr/lib/kicad
+usr/bin/_gerbview.kiface         usr/lib/kicad
+usr/bin/_pcb_calculator.kiface   usr/lib/kicad
+usr/bin/_pcbnew.kiface           usr/lib/kicad
+usr/bin/_pl_editor.kiface        usr/lib/kicad
+usr/bin/bitmap2component
+usr/bin/dxf2idf
+usr/bin/eeschema
+usr/bin/gerbview
+usr/bin/idf2vrml
+usr/bin/idfcyl
+usr/bin/idfrect
+usr/bin/kicad
+usr/bin/pcb_calculator
+usr/bin/pcbnew
+usr/bin/pl_editor
+usr/lib/kicad
+usr/lib/python2.7/dist-packages
+usr/share/applications
+debian/man/*                     usr/share/man/man1
diff --git a/kicad.links b/kicad.links
new file mode 100644 (file)
index 0000000..d1d9231
--- /dev/null
@@ -0,0 +1,7 @@
+# source                                          # target
+usr/lib/kicad/_cvpcb.kiface                       usr/bin/_cvpcb.kiface
+usr/lib/kicad/_eeschema.kiface                    usr/bin/_eeschema.kiface
+usr/lib/kicad/_gerbview.kiface                    usr/bin/_gerbview.kiface
+usr/lib/kicad/_pcb_calculator.kiface              usr/bin/_pcb_calculator.kiface
+usr/lib/kicad/_pcbnew.kiface                      usr/bin/_pcbnew.kiface
+usr/lib/kicad/_pl_editor.kiface                   usr/bin/_pl_editor.kiface
diff --git a/kicad.lintian-overrides b/kicad.lintian-overrides
new file mode 100644 (file)
index 0000000..0c9bc17
--- /dev/null
@@ -0,0 +1,10 @@
+# Those files are the libraries and no executables.
+kicad: binary-without-manpage usr/bin/_cvpcb.kiface
+kicad: binary-without-manpage usr/bin/_eeschema.kiface
+kicad: binary-without-manpage usr/bin/_gerbview.kiface
+kicad: binary-without-manpage usr/bin/_pcb_calculator.kiface
+kicad: binary-without-manpage usr/bin/_pcbnew.kiface
+kicad: binary-without-manpage usr/bin/_pl_editor.kiface
+# Lintian doesn't check that with much intelligence
+kicad: spelling-error-in-binary usr/lib/kicad/_pcbnew.kiface allows to allows one to
+kicad: spelling-error-in-binary usr/lib/python2.7/dist-packages/_pcbnew.*.so allows to allows one to
diff --git a/kicad.manpages b/kicad.manpages
new file mode 100644 (file)
index 0000000..13cdaf4
--- /dev/null
@@ -0,0 +1 @@
+debian/man/*.1
diff --git a/man/bitmap2component.1 b/man/bitmap2component.1
new file mode 100644 (file)
index 0000000..20b0f04
--- /dev/null
@@ -0,0 +1,18 @@
+.TH bitmap2component 1 "January 19, 2017" "bitmap2component"
+
+.SH NAME
+bitmap2component \- converts a bitmap graphic into a footprint or component.
+
+.SH DESCRIPTION
+.PP
+.B bitmap2component
+The bitmap2component can create a footprint or a component from black/white
+bitmap graphic or a logo. It's possible to create a output file for eeschema
+(*.lib), pcbnew (*.kicad_mod), postscript (*.ps) or the pl_editor
+(*.kicad-wks).
+
+.SH SYNOPSIS
+.B bitmap2component
+
+.SH AUTHOR
+Carsten Schoenert <c.schoenert@t-online.de>
diff --git a/man/cvpcb.1 b/man/cvpcb.1
new file mode 100644 (file)
index 0000000..30d1a09
--- /dev/null
@@ -0,0 +1,18 @@
+.TH cvpcb 1 "June 15, 2007" "cvpcb"
+
+.SH NAME
+cvpcb \- assign components to a netlist.
+
+.SH DESCRIPTION
+.PP
+.B cvpcb
+allows you to assign each component that appears in the netlist to a component
+footprint which will represent it on a PCB and adds this information to the
+netlist.
+
+.SH SYNOPSIS
+.B cvpcb
+.RI [ netlist ]
+
+.SH AUTHOR
+Richard Antony Burton <richardaburton@gmail.com>
diff --git a/man/dxf2idf.1 b/man/dxf2idf.1
new file mode 100644 (file)
index 0000000..4702b7b
--- /dev/null
@@ -0,0 +1,16 @@
+.TH dxf2idf 1 "January 19, 2017" "dxf2idf"
+
+.SH NAME
+dxf2idf \- creates an IDF component outline file from a dxf file.
+
+.SH DESCRIPTION
+.PP
+.B dxf2idf
+This program takes line, arc, and circle segments from a DXF file and creates
+an IDF component outline file. dxf2idf is part of the KiCad suite.
+
+.SH SYNOPSIS
+.B dxf2idf
+
+.SH AUTHOR
+Carsten Schoenert <c.schoenert@t-online.de>
diff --git a/man/eeschema.1 b/man/eeschema.1
new file mode 100644 (file)
index 0000000..ed7a12b
--- /dev/null
@@ -0,0 +1,22 @@
+.TH eeschema 1 "June 15, 2007" "eeschema"
+
+.SH NAME
+eeschema \- a powerful schematic capture application.
+
+.SH DESCRIPTION
+.PP
+.B eeschema
+integrates the functions of drawing, control, layout, library management and 
+access to the PCB design software. It also allows hierarchical drawings, using
+multi-sheets diagrams. It is intended to work with printed circuit software such
+as pcbnew, to which it will provide the netlist file. Eeschema also integrates a
+component editor which allows the creation, editing and visualization of
+components, as well as the handling of the symbol libraries (import, export,
+addition and deletion of library components).
+
+.SH SYNOPSIS
+.B eeschema
+.RI [ schematic ]
+
+.SH AUTHOR
+Richard Antony Burton <richardaburton@gmail.com>
diff --git a/man/gerbview.1 b/man/gerbview.1
new file mode 100644 (file)
index 0000000..411bae7
--- /dev/null
@@ -0,0 +1,11 @@
+.TH gerbview 1 "June 15, 2007" "gerbview"
+
+.SH NAME
+gerbview \- viewer for GERBER format files.
+
+.SH SYNOPSIS
+.B gerbview
+.RI [ gerberfile ]
+
+.SH AUTHOR
+Richard Antony Burton <richardaburton@gmail.com>
diff --git a/man/idf2vrml.1 b/man/idf2vrml.1
new file mode 100644 (file)
index 0000000..c5d371c
--- /dev/null
@@ -0,0 +1,46 @@
+.TH idf2vrml 1 "June 19, 2017" "idf2vrml"
+
+.SH NAME
+idf2vrml \- create a VRML file from IDF Board (.emn) and one IDF Component file (.emp).
+
+.SH DESCRIPTION
+.PP
+.B idf2vrml
+The idf2vrml tool reads a set of one IDF Board (.emn) and one IDF Component
+file (.emp) and produces a VRML file which can be viewed with a VRML viewer.
+idf2vrml is part of the KiCad suite.
+
+.SH SYNOPSIS
+.B idf2vrml
+\-f input_file.emn \-s scale_factor [\-k] [\-d] [\-z] [\-m]
+
+.SH OPTIONS
+.TP
+.B \-k
+produce KiCad-friendly VRML output; default is compact VRML
+
+.TP
+.B \-d
+suppress substitution of default outlines
+
+.TP
+.B \-z
+suppress rendering of zero-height outlines
+
+.TP
+.B \-m
+print object mapping to stdout for debugging purposes
+
+.SH EXAMPLE
+.sp
+Tto produce a model for use by KiCad:
+.sp
+.if n \{\ 
+.RS 4
+.\}
+.nf
+idf2vrml \-f input.emn \-s 0.3937008 -k
+.fi
+
+.SH AUTHOR
+Carsten Schoenert <c.schoenert@t-online.de>
diff --git a/man/idfcyl.1 b/man/idfcyl.1
new file mode 100644 (file)
index 0000000..3b7fda5
--- /dev/null
@@ -0,0 +1,18 @@
+.TH idfcyl 1 "January 19, 2017" "idfcyl"
+
+.SH NAME
+idfcyl \- generates an outline for a cylindrical component.
+
+.SH DESCRIPTION
+.PP
+.B idfcyl
+This program generates an outline for a cylindrical component. The cylinder
+may be horizontal or vertical. A horizontal cylinder may have wires at one or
+both ends. A vertical cylinder may have at most one wire which may be placed
+on the left or right side. idfcyl is part of the KiCad suite.
+
+.SH SYNOPSIS
+.B idfcyl
+
+.SH AUTHOR
+Carsten Schoenert <c.schoenert@t-online.de>
diff --git a/man/idfrect.1 b/man/idfrect.1
new file mode 100644 (file)
index 0000000..c2c8543
--- /dev/null
@@ -0,0 +1,17 @@
+.TH idfrect 1 "January 19, 2017" "idfrect"
+
+.SH NAME
+idfrect \- generates an outline for a rectangular component.
+
+.SH DESCRIPTION
+.PP
+.B idfrect
+This program generates an outline for a rectangular component. The component
+may have a single lead (axial) or a chamfer on the upper left corner. idfrect
+is part of the KiCad suite.
+
+.SH SYNOPSIS
+.B idfrect
+
+.SH AUTHOR
+Carsten Schoenert <c.schoenert@t-online.de>
diff --git a/man/kicad.1 b/man/kicad.1
new file mode 100644 (file)
index 0000000..6bb32de
--- /dev/null
@@ -0,0 +1,17 @@
+.TH kicad 1 "June 15, 2007" "kicad"
+
+.SH NAME
+kicad \- manager application for Kicad projects.
+
+.SH DESCRIPTION
+.PP
+The kicad utility program is a project manager that facilitates the use of the
+various programs required to draw schematics, lay out PCBs, generate and check
+the production files.
+
+.SH SYNOPSIS
+.B kicad
+.RI [ project ]
+
+.SH AUTHOR
+Richard Antony Burton <richardaburton@gmail.com>
diff --git a/man/pcb_calculator.1 b/man/pcb_calculator.1
new file mode 100644 (file)
index 0000000..ecf4ac9
--- /dev/null
@@ -0,0 +1,17 @@
+.TH pcb_caculator 1 "January 19, 2017" "pcb_caculator"
+
+.SH NAME
+pcb_caculator \- tools for calculating the environment on a PCB.
+
+.SH DESCRIPTION
+.PP
+.B pcb_caculator
+A tool for planing and calculating the width of traces, voltage regulators, for
+electrical spacings and RF Attenuators. Also information about color codes for
+resistors and information about board classes are shown.
+
+.SH SYNOPSIS
+.B pcb_caculator
+
+.SH AUTHOR
+Carsten Schoenert <c.schoenert@t-online.de>
diff --git a/man/pcbnew.1 b/man/pcbnew.1
new file mode 100644 (file)
index 0000000..c89e9b4
--- /dev/null
@@ -0,0 +1,17 @@
+.TH pcbnew 1 "June 15, 2007" "pcbnew"
+
+.SH NAME
+pcbnew \- a powerful printed circuit board editor.
+
+.B pcbnew
+manages libraries of modules. Each module is a drawing of the physical
+component, including its footprint, and the layout of pads providing connections
+to the component. The required modules are automatically loaded during the
+reading of the netlist produced by pcbnew.
+
+.SH SYNOPSIS
+.B pcbnew
+.RI [ boardfile ]
+
+.SH AUTHOR
+Richard Antony Burton <richardaburton@gmail.com>
diff --git a/man/pl_editor.1 b/man/pl_editor.1
new file mode 100644 (file)
index 0000000..06b75ef
--- /dev/null
@@ -0,0 +1,19 @@
+.TH pl_editor 1 "January 15, 2017" "pl_editor"
+
+.SH NAME
+pl_editor \- editor tool to create custom title blocks and frame references.
+
+.B pl_editor
+By the pl_editor the title block and the complete layout of a working sheet in
+eeschema and pcbnew can be fully customized. The editor can modify some basic
+page layout items like lines, rectangles, texts (with format symbols, that will
+be replaced by the actual text, like the date, page number…) and also polygons
+(mainly to place logos and special graphic shapes) and bitmaps. Text can be
+angled in any way.
+
+.SH SYNOPSIS
+.B pl_editor
+.RI [ layoutfile ]
+
+.SH AUTHOR
+Carsten Schoenert <c.schoenert@t-online.de>
diff --git a/patches/debian-hacks/Adding-needed-SVG-files-and-additinal-arrays.patch b/patches/debian-hacks/Adding-needed-SVG-files-and-additinal-arrays.patch
new file mode 100644 (file)
index 0000000..f00ea83
--- /dev/null
@@ -0,0 +1,523 @@
+From: Georges Khaznadar <georgesk@debian.org>
+Date: Sat, 3 Sep 2016 17:57:10 +0200
+Subject: Adding needed SVG files and additinal arrays
+
+Adding two SVG files and the additional string arrays due the upstream
+files are not DFSG clean.
+---
+ bitmaps_png/cpp_26/find.cpp          |  79 ++++++++++++++++
+ bitmaps_png/cpp_26/find_replace.cpp  |  97 +++++++++++++++++++
+ bitmaps_png/sources/find.svg         | 127 +++++++++++++++++++++++++
+ bitmaps_png/sources/find_replace.svg | 179 +++++++++++++++++++++++++++++++++++
+ 4 files changed, 482 insertions(+)
+ create mode 100644 bitmaps_png/cpp_26/find.cpp
+ create mode 100644 bitmaps_png/cpp_26/find_replace.cpp
+ create mode 100644 bitmaps_png/sources/find.svg
+ create mode 100644 bitmaps_png/sources/find_replace.svg
+
+diff --git a/bitmaps_png/cpp_26/find.cpp b/bitmaps_png/cpp_26/find.cpp
+new file mode 100644
+index 00000000..ffb88d44
+--- /dev/null
++++ b/bitmaps_png/cpp_26/find.cpp
+@@ -0,0 +1,79 @@
++
++/* Do not modify this file, it was automatically generated by the
++ * PNG2cpp CMake script, using a *.png file as input.
++ */
++
++#include <bitmaps.h>
++
++static const unsigned char png[] = {
++ 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
++ 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
++ 0xce, 0x00, 0x00, 0x03, 0xd8, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x96, 0x5d, 0x4c, 0x53,
++ 0x77, 0x18, 0xc6, 0x8b, 0x71, 0xb2, 0xcd, 0xab, 0xed, 0xc2, 0x1b, 0x33, 0x97, 0x25, 0x4e, 0x83,
++ 0x3d, 0x47, 0xdd, 0xad, 0xc9, 0xbc, 0xf0, 0xd6, 0xcc, 0x65, 0xbb, 0x58, 0x96, 0x99, 0xdd, 0xec,
++ 0x62, 0x73, 0x31, 0x22, 0xdb, 0x92, 0x5d, 0xe9, 0x52, 0xfc, 0x80, 0x9e, 0x16, 0x6d, 0x4b, 0xb0,
++ 0x85, 0xd2, 0x8f, 0x73, 0x4a, 0x90, 0x95, 0x42, 0x44, 0xb4, 0x8c, 0x16, 0x28, 0xb1, 0xd5, 0x56,
++ 0xe8, 0x70, 0x7c, 0x74, 0x40, 0x69, 0xa1, 0xa5, 0xd9, 0x18, 0x23, 0x48, 0xd6, 0x1e, 0x3e, 0xb4,
++ 0x85, 0x3e, 0x7b, 0xcf, 0xc9, 0x34, 0x31, 0x8b, 0x5b, 0xbb, 0x74, 0xf1, 0x24, 0x6f, 0x72, 0x72,
++ 0x92, 0xff, 0xf9, 0xfd, 0x9f, 0xe7, 0x7d, 0xfe, 0xef, 0x39, 0x0a, 0xc5, 0x8b, 0xbc, 0x2c, 0x16,
++ 0xcb, 0xeb, 0x4d, 0x4d, 0x4d, 0x95, 0x82, 0x20, 0x04, 0xec, 0x76, 0x7b, 0x8a, 0xea, 0x37, 0xba,
++ 0x1f, 0xb3, 0xd9, 0x6c, 0xea, 0xe6, 0xe6, 0xe6, 0x8a, 0x52, 0x41, 0xce, 0x5a, 0xad, 0x56, 0xd1,
++ 0xe7, 0xf3, 0xad, 0xcd, 0xcc, 0xcc, 0x60, 0x7a, 0x7a, 0x5a, 0x2e, 0xe9, 0x7e, 0x78, 0x78, 0x38,
++ 0xc7, 0xf3, 0xfc, 0x2a, 0xd5, 0x75, 0x87, 0xc3, 0xb1, 0xf3, 0x3f, 0x43, 0x68, 0xe7, 0x76, 0x97,
++ 0xcb, 0x25, 0x26, 0x12, 0x09, 0x74, 0xb9, 0x7b, 0xd0, 0xe0, 0x0d, 0x80, 0xbb, 0x3b, 0x8e, 0x9a,
++ 0x40, 0x04, 0x86, 0xc1, 0x30, 0x5a, 0xba, 0x6e, 0x63, 0x72, 0x72, 0x12, 0x7e, 0xbf, 0x7f, 0x83,
++ 0xd4, 0xc5, 0x8d, 0x46, 0xe3, 0x6b, 0x45, 0x43, 0x68, 0xe1, 0xb7, 0x9d, 0x9d, 0x9d, 0xe2, 0xd4,
++ 0xd4, 0x14, 0x4c, 0xbd, 0x77, 0x50, 0x1d, 0x8e, 0xa1, 0xff, 0xe1, 0x0a, 0xc2, 0x1b, 0x19, 0xfc,
++ 0xf8, 0x48, 0x44, 0x70, 0x35, 0x03, 0x3e, 0xfe, 0x2b, 0xb4, 0x81, 0x9f, 0x30, 0x30, 0x38, 0x88,
++ 0xa1, 0xa1, 0xa1, 0xc7, 0xa4, 0x2c, 0x08, 0xa0, 0xac, 0x60, 0x88, 0xc9, 0x64, 0xda, 0x45, 0x20,
++ 0x71, 0x7e, 0x7e, 0x1e, 0x26, 0xcf, 0x1d, 0xd4, 0x8d, 0x25, 0xf1, 0xe0, 0xb1, 0x88, 0x9f, 0xb1,
++ 0xfe, 0x4c, 0x45, 0xb6, 0xd6, 0xe0, 0x59, 0x5e, 0x41, 0xcd, 0xbd, 0x09, 0x8c, 0x8c, 0x8c, 0x80,
++ 0x36, 0x96, 0x31, 0x9b, 0xcd, 0x1f, 0x15, 0x0c, 0xa2, 0x06, 0x7f, 0x13, 0x08, 0x04, 0x36, 0xba,
++ 0xdc, 0x3f, 0xe0, 0xfc, 0x7d, 0xea, 0xc5, 0x5a, 0xe6, 0x6f, 0x90, 0x27, 0x35, 0x41, 0x30, 0x5b,
++ 0x6c, 0x01, 0x66, 0x77, 0x1f, 0x66, 0x67, 0x67, 0x41, 0xaa, 0x46, 0x0a, 0x06, 0x51, 0xa2, 0x42,
++ 0xd2, 0xa2, 0x46, 0xaf, 0x1f, 0xc6, 0x48, 0x0a, 0x63, 0xb9, 0xd5, 0xe7, 0x82, 0xa4, 0x0a, 0x8a,
++ 0x69, 0xd4, 0x04, 0x27, 0xe5, 0x90, 0x50, 0x78, 0x36, 0xea, 0xeb, 0xeb, 0xcb, 0x0b, 0x02, 0xd1,
++ 0xae, 0x52, 0x52, 0x00, 0x74, 0x81, 0x51, 0xb4, 0xc5, 0x17, 0x31, 0xb6, 0xb9, 0xf6, 0x8f, 0xa0,
++ 0xf0, 0x7a, 0x06, 0xd5, 0xf7, 0xe5, 0x14, 0xa2, 0xb5, 0xb5, 0xf5, 0x0f, 0x72, 0xe4, 0xad, 0x42,
++ 0x41, 0x89, 0xb9, 0xb9, 0x39, 0xe8, 0xa9, 0xd1, 0xc2, 0xf4, 0x02, 0x46, 0xb3, 0xff, 0xa2, 0x28,
++ 0x43, 0xa0, 0x50, 0x54, 0xee, 0x13, 0xc5, 0x3c, 0x4d, 0x3d, 0xde, 0x5d, 0xa8, 0x75, 0x03, 0xf1,
++ 0x78, 0x1c, 0xe6, 0x1e, 0x1f, 0xf4, 0x14, 0x84, 0x60, 0x26, 0x8d, 0xc8, 0x73, 0x20, 0x92, 0xad,
++ 0x1d, 0x73, 0x8b, 0xe0, 0xee, 0x45, 0x20, 0xad, 0xa1, 0x33, 0xb7, 0xae, 0x52, 0xa9, 0xb6, 0x17,
++ 0x04, 0xa2, 0xe4, 0x7c, 0xe6, 0xf5, 0x7a, 0xc5, 0xbe, 0x01, 0x1f, 0xce, 0xd3, 0x4e, 0x5d, 0xf1,
++ 0xdf, 0xc9, 0x1e, 0x11, 0x13, 0xf9, 0x67, 0x21, 0xa3, 0x04, 0xf1, 0x2d, 0xad, 0xe0, 0x52, 0x38,
++ 0x0e, 0xfe, 0xa6, 0x5b, 0xee, 0x11, 0xb9, 0xe1, 0x2d, 0x38, 0x0c, 0x34, 0x6e, 0x5e, 0xa5, 0x78,
++ 0x2f, 0x4b, 0xf1, 0xb6, 0xde, 0xea, 0xa5, 0xe4, 0xc5, 0xe0, 0x8c, 0x2d, 0x62, 0x60, 0x71, 0x19,
++ 0x43, 0x74, 0x7e, 0xa4, 0x14, 0x06, 0xd3, 0x69, 0xdc, 0x4a, 0x2e, 0x41, 0xfb, 0x20, 0x01, 0x83,
++ 0x6f, 0x18, 0xd1, 0x68, 0x14, 0x0e, 0xc1, 0x8a, 0x66, 0xfd, 0x27, 0x97, 0x8b, 0x3a, 0xb0, 0xa4,
++ 0xea, 0x04, 0xf9, 0x2d, 0x26, 0x93, 0x49, 0xd8, 0x6f, 0xf6, 0xe0, 0xbb, 0xe0, 0x14, 0x34, 0xf4,
++ 0x52, 0xe3, 0x44, 0x0a, 0x8d, 0x94, 0x44, 0xdd, 0x68, 0x12, 0xe7, 0x42, 0x33, 0xb8, 0xe6, 0xf1,
++ 0x63, 0x7c, 0x7c, 0x1c, 0xee, 0xdb, 0x5d, 0x68, 0x69, 0xac, 0x82, 0xa0, 0x61, 0x37, 0xed, 0x1c,
++ 0xf3, 0x69, 0x51, 0x30, 0xf2, 0xfb, 0xb4, 0x34, 0xcb, 0x62, 0xb1, 0x18, 0x42, 0xa1, 0x10, 0x6c,
++ 0x34, 0x72, 0xa4, 0x31, 0x54, 0xdf, 0x1f, 0x44, 0x53, 0x77, 0x2f, 0x3c, 0x7d, 0xfd, 0x90, 0x42,
++ 0xd3, 0xe1, 0xba, 0x0e, 0xa3, 0xae, 0x0a, 0x17, 0x4e, 0x6d, 0x47, 0xfb, 0xd5, 0xbd, 0xe0, 0x09,
++ 0xc6, 0x73, 0xec, 0xc9, 0xa2, 0x60, 0x14, 0xd5, 0x77, 0x69, 0xe4, 0x45, 0xdb, 0xda, 0xda, 0xd2,
++ 0xe1, 0x70, 0x38, 0x27, 0xcd, 0x36, 0xa9, 0x17, 0xa4, 0x22, 0xdf, 0xdd, 0xdd, 0x9d, 0xb1, 0x5a,
++ 0x4c, 0x5b, 0x2d, 0x0d, 0x27, 0x73, 0x75, 0x5f, 0xef, 0x44, 0xf5, 0x17, 0x65, 0x04, 0xdb, 0x06,
++ 0x27, 0xc1, 0x64, 0x65, 0x6a, 0xe5, 0xc7, 0x45, 0xc1, 0xa4, 0xf9, 0x45, 0x56, 0x1e, 0x21, 0xe8,
++ 0x65, 0x52, 0x78, 0x83, 0x52, 0xd9, 0x43, 0x6a, 0xaf, 0xd1, 0xb3, 0x0f, 0x2c, 0x0d, 0x1f, 0xbe,
++ 0xe9, 0xd0, 0xb0, 0xb3, 0xdf, 0xeb, 0x98, 0x6c, 0xdd, 0x57, 0xaf, 0x40, 0x45, 0xb0, 0x8b, 0x5f,
++ 0x12, 0x4c, 0xb7, 0x0f, 0x0e, 0x8e, 0xcd, 0x09, 0x6a, 0xf6, 0xfd, 0x92, 0x7d, 0xaf, 0x84, 0xab,
++ 0x87, 0x76, 0x0b, 0x1a, 0x26, 0x25, 0xc1, 0xb4, 0x55, 0x2f, 0x3f, 0x85, 0xb5, 0x1b, 0xde, 0xce,
++ 0x0b, 0x04, 0x23, 0x65, 0xef, 0x95, 0x0c, 0x66, 0xbb, 0xc2, 0xbc, 0x41, 0xb0, 0x5f, 0x9c, 0x3a,
++ 0x65, 0x96, 0x3b, 0x5b, 0x2e, 0xdb, 0x28, 0xc3, 0x74, 0xfb, 0x64, 0x18, 0xaf, 0x66, 0x8e, 0x97,
++ 0x0c, 0xe6, 0x50, 0x2b, 0xf7, 0x38, 0xb4, 0xcc, 0x82, 0x53, 0xcf, 0x64, 0xb9, 0xca, 0x72, 0xa8,
++ 0x3e, 0x57, 0xc8, 0xb0, 0x0e, 0xc3, 0xfe, 0x3c, 0xcf, 0x31, 0x59, 0x5b, 0xad, 0xf2, 0x58, 0xc9,
++ 0x60, 0x2d, 0xb5, 0xca, 0xbd, 0x02, 0xc7, 0x2c, 0xb5, 0xeb, 0x95, 0xb9, 0xda, 0x33, 0x3b, 0xc8,
++ 0x46, 0xc5, 0x5f, 0x36, 0x56, 0xe4, 0x79, 0x0d, 0xf3, 0x88, 0x57, 0xb3, 0x47, 0x4b, 0x06, 0xb3,
++ 0x72, 0x07, 0xf7, 0x93, 0x8d, 0x0f, 0x25, 0x58, 0xcd, 0x99, 0x97, 0xc0, 0x55, 0xee, 0x40, 0x9f,
++ 0xfd, 0x10, 0x25, 0x91, 0xa1, 0x33, 0xa6, 0x54, 0x97, 0xf4, 0x87, 0xe6, 0x09, 0xcc, 0xa9, 0xaf,
++ 0xd8, 0xf4, 0x58, 0x0f, 0x43, 0xd0, 0xb2, 0x59, 0x3a, 0x5b, 0x36, 0x40, 0x51, 0xa6, 0x28, 0xf5,
++ 0x65, 0x57, 0xb3, 0x2c, 0xd9, 0x95, 0xa6, 0xda, 0xfa, 0xdf, 0x20, 0x4f, 0xa3, 0x5f, 0x7b, 0xe0,
++ 0x1d, 0x0a, 0x82, 0x41, 0xa5, 0x52, 0x6c, 0x7b, 0x21, 0xff, 0x8a, 0x7f, 0x02, 0x05, 0x4a, 0x66,
++ 0x15, 0x2e, 0x24, 0x08, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60,
++ 0x82,
++};
++
++const BITMAP_OPAQUE find_xpm[1] = {{ png, sizeof( png ), "find_xpm" }};
++
++//EOF
+diff --git a/bitmaps_png/cpp_26/find_replace.cpp b/bitmaps_png/cpp_26/find_replace.cpp
+new file mode 100644
+index 00000000..1f11867b
+--- /dev/null
++++ b/bitmaps_png/cpp_26/find_replace.cpp
+@@ -0,0 +1,97 @@
++
++/* Do not modify this file, it was automatically generated by the
++ * PNG2cpp CMake script, using a *.png file as input.
++ */
++
++#include <bitmaps.h>
++
++static const unsigned char png[] = {
++ 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
++ 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
++ 0xce, 0x00, 0x00, 0x04, 0xfb, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x96, 0x7b, 0x4c, 0x53,
++ 0x57, 0x1c, 0xc7, 0x6f, 0x51, 0x20, 0x38, 0xe6, 0x9c, 0x2d, 0xcc, 0x09, 0x92, 0xa1, 0xa8, 0x71,
++ 0x6d, 0x9d, 0xce, 0x65, 0x7f, 0x6c, 0x99, 0x99, 0xcb, 0x9e, 0xea, 0x9c, 0x46, 0xc1, 0x6d, 0x6e,
++ 0x2e, 0xd3, 0x4d, 0xe3, 0xe6, 0x2b, 0x2e, 0xc3, 0xbd, 0x74, 0x45, 0x27, 0xb4, 0xb2, 0x85, 0x42,
++ 0xb4, 0x15, 0x68, 0x69, 0x0b, 0x41, 0x22, 0xa0, 0x22, 0x0a, 0xf2, 0x90, 0x12, 0xa9, 0xb4, 0x40,
++ 0x45, 0x79, 0x74, 0xbc, 0x5a, 0x01, 0x89, 0x73, 0x8c, 0x20, 0xb3, 0xf7, 0x82, 0x95, 0x02, 0xfd,
++ 0xee, 0x77, 0xd9, 0x23, 0x31, 0x13, 0x2d, 0xce, 0x64, 0x27, 0xf9, 0x25, 0x37, 0xf7, 0xe6, 0x9c,
++ 0xcf, 0xf9, 0x7d, 0x7f, 0xdf, 0xf3, 0x3b, 0x97, 0x61, 0xfe, 0xcf, 0xa1, 0xd1, 0x68, 0xa6, 0x26,
++ 0x27, 0x27, 0x6f, 0x37, 0x18, 0x0c, 0x26, 0x9d, 0x4e, 0xd7, 0x45, 0xf1, 0x2b, 0x3d, 0xd7, 0xa7,
++ 0xa5, 0xa5, 0xc9, 0x53, 0x53, 0x53, 0xe7, 0x3d, 0x2c, 0xc8, 0x0e, 0xad, 0x56, 0xcb, 0x19, 0x8d,
++ 0xc6, 0x81, 0xb6, 0xb6, 0x36, 0xb4, 0xb4, 0xb4, 0x8c, 0x06, 0xff, 0x5c, 0x53, 0x53, 0x33, 0xa4,
++ 0xd7, 0xeb, 0xfb, 0x29, 0x8e, 0xa6, 0xa7, 0xa7, 0x3f, 0xf2, 0xc0, 0x10, 0xda, 0xb9, 0x2e, 0x27,
++ 0x27, 0x87, 0xeb, 0xe8, 0xe8, 0x40, 0x5e, 0x41, 0x21, 0x0e, 0x95, 0x98, 0xa0, 0xb8, 0xd0, 0x80,
++ 0x58, 0x93, 0x0d, 0x89, 0xe5, 0x56, 0x64, 0xe4, 0x9d, 0x41, 0x53, 0x53, 0x13, 0x2a, 0x2a, 0x2a,
++ 0x5c, 0x94, 0x9d, 0x43, 0xa5, 0x52, 0x3d, 0x3e, 0x6e, 0x08, 0x4d, 0x8c, 0x3e, 0x7e, 0xfc, 0x38,
++ 0xd7, 0xdc, 0xdc, 0x0c, 0x75, 0xd1, 0x79, 0xc4, 0x58, 0xed, 0x38, 0x77, 0xa3, 0x0f, 0x56, 0x17,
++ 0x8b, 0x8b, 0xb7, 0x39, 0x98, 0xfb, 0x59, 0xe8, 0x1d, 0xbf, 0x20, 0xde, 0x74, 0x19, 0x65, 0xe5,
++ 0xe5, 0xa8, 0xae, 0xae, 0x1e, 0xa4, 0xcc, 0xcc, 0x00, 0x04, 0x5e, 0x43, 0xd4, 0x6a, 0x75, 0x30,
++ 0x81, 0xb8, 0xab, 0x57, 0xaf, 0x42, 0x5d, 0x7c, 0x1e, 0x3f, 0xd6, 0x77, 0xe2, 0xd2, 0x20, 0x87,
++ 0x9f, 0x71, 0xeb, 0x8e, 0xb0, 0x8d, 0x0c, 0xa0, 0xb8, 0xb7, 0x0f, 0xb1, 0x95, 0x8d, 0xa8, 0xad,
++ 0xad, 0x05, 0x6d, 0x8c, 0x4d, 0x49, 0x49, 0x89, 0xf2, 0x1a, 0x44, 0x05, 0xfe, 0xc2, 0x64, 0x32,
++ 0xb9, 0xf2, 0x0a, 0xce, 0x62, 0x4f, 0x15, 0xd5, 0x62, 0x80, 0xfd, 0x17, 0xe4, 0xef, 0x68, 0x24,
++ 0x58, 0x9a, 0xfd, 0x3a, 0x52, 0x0a, 0x4a, 0x71, 0xe5, 0xca, 0x15, 0x50, 0x56, 0xb5, 0x5e, 0x83,
++ 0xc8, 0x51, 0x16, 0x7e, 0xd2, 0x91, 0x92, 0x0a, 0xa8, 0x6c, 0x5d, 0xa8, 0x1f, 0xea, 0x1f, 0x13,
++ 0xc4, 0x87, 0x99, 0x73, 0x22, 0xd6, 0xdc, 0x34, 0x6a, 0x12, 0x32, 0x8f, 0x2b, 0x29, 0x29, 0xc9,
++ 0xdf, 0x2b, 0x10, 0xed, 0xaa, 0x8b, 0x37, 0x40, 0x82, 0xa9, 0x0e, 0x59, 0x8e, 0x6e, 0xd4, 0x0f,
++ 0x0f, 0xdc, 0x13, 0x64, 0xbd, 0xc5, 0x22, 0xa6, 0x6a, 0xd4, 0x85, 0xc8, 0xcc, 0xcc, 0xbc, 0x49,
++ 0x8a, 0x84, 0x7b, 0x0b, 0xea, 0x68, 0x6f, 0x6f, 0x87, 0x92, 0x0a, 0x6d, 0x68, 0xb9, 0x8e, 0x3a,
++ 0xf7, 0x7d, 0x32, 0x62, 0x09, 0x64, 0x69, 0x1d, 0xad, 0x13, 0xd9, 0xdc, 0x49, 0x35, 0x0e, 0xf1,
++ 0x56, 0xba, 0x32, 0x87, 0xc3, 0x81, 0x94, 0x42, 0x23, 0x94, 0x64, 0x04, 0x33, 0xeb, 0x84, 0x6d,
++ 0x0c, 0x08, 0x2f, 0x6b, 0x6e, 0x7b, 0x37, 0x14, 0x95, 0x36, 0xf0, 0x73, 0xe8, 0xcc, 0xdd, 0x92,
++ 0xc9, 0x64, 0x13, 0xf9, 0x75, 0x22, 0x19, 0x66, 0x42, 0x54, 0x88, 0x68, 0xc9, 0x98, 0x20, 0x72,
++ 0xce, 0x86, 0x92, 0x92, 0x12, 0xae, 0xb4, 0xcc, 0x88, 0x3d, 0xb4, 0xd3, 0x1c, 0xc7, 0x6f, 0x24,
++ 0x0f, 0x87, 0x46, 0xcf, 0x9d, 0x90, 0x3a, 0x82, 0x18, 0x7b, 0xfa, 0xf0, 0x83, 0xd5, 0x01, 0xfd,
++ 0xa9, 0x82, 0xd1, 0x1a, 0x91, 0x1a, 0x25, 0xfc, 0x1a, 0x2b, 0x44, 0xa2, 0x47, 0x37, 0x8a, 0x85,
++ 0xc5, 0xf2, 0x55, 0x8f, 0xdd, 0xfc, 0x76, 0xc9, 0x63, 0x9b, 0xee, 0x0a, 0xa2, 0x76, 0x33, 0x89,
++ 0xec, 0xdd, 0xcb, 0xdb, 0x5b, 0x7b, 0xba, 0x88, 0x9c, 0x67, 0xc7, 0x31, 0x7b, 0x37, 0xca, 0xba,
++ 0x7b, 0x51, 0x4d, 0xe7, 0x87, 0x77, 0xa1, 0xd9, 0xe9, 0xc4, 0xe9, 0xce, 0x1e, 0xc4, 0x5f, 0xea,
++ 0x40, 0xa2, 0xb1, 0x06, 0xad, 0xad, 0xad, 0x48, 0x37, 0x68, 0x91, 0xaa, 0x7c, 0xff, 0x00, 0x41,
++ 0xa6, 0x7f, 0xb6, 0x40, 0x58, 0xd5, 0x75, 0x62, 0xe2, 0x20, 0x7b, 0x9e, 0xe9, 0xfb, 0xfa, 0xb5,
++ 0xc9, 0xdd, 0x2b, 0x83, 0x82, 0x16, 0x8c, 0x95, 0xd5, 0x0a, 0xd2, 0x9b, 0xeb, 0xec, 0xec, 0x84,
++ 0xee, 0x54, 0x21, 0xf6, 0x9a, 0x9b, 0x71, 0x90, 0x16, 0x55, 0x35, 0x76, 0xe1, 0x08, 0x39, 0x31,
++ 0xa1, 0xae, 0x13, 0xdf, 0x59, 0xda, 0x70, 0xb8, 0xb8, 0x02, 0x0d, 0x0d, 0x0d, 0x28, 0x38, 0x93,
++ 0x87, 0x8c, 0x23, 0x3b, 0xa1, 0xdc, 0x35, 0x77, 0xe4, 0xcb, 0x97, 0x45, 0xd7, 0x9c, 0x46, 0x1f,
++ 0xcf, 0x0d, 0x23, 0xc3, 0x5e, 0xcc, 0x64, 0xfa, 0xf7, 0xae, 0xf3, 0x75, 0xaf, 0x09, 0x15, 0x15,
++ 0x8e, 0x29, 0x21, 0xe9, 0xfd, 0x39, 0xdf, 0xcb, 0xec, 0x76, 0x3b, 0x2c, 0x16, 0x0b, 0xd2, 0xa8,
++ 0xe5, 0xf0, 0x6d, 0x28, 0xe9, 0x9c, 0x19, 0xc9, 0xf9, 0x45, 0x28, 0x2e, 0x3d, 0x07, 0xde, 0x34,
++ 0xb9, 0x39, 0x47, 0xa1, 0x4a, 0xd8, 0x89, 0xe8, 0xd5, 0x01, 0x88, 0x5b, 0x23, 0xc4, 0xed, 0x4a,
++ 0x01, 0xae, 0x9d, 0x15, 0xb8, 0x2f, 0x68, 0x18, 0x2e, 0x7a, 0x95, 0x1f, 0x17, 0x35, 0x53, 0x54,
++ 0x10, 0x19, 0x1a, 0x1a, 0x70, 0xbf, 0xc3, 0xfb, 0x12, 0xb5, 0xbc, 0xd6, 0xac, 0xac, 0x2c, 0xa7,
++ 0xd5, 0x6a, 0x1d, 0xe2, 0x7b, 0x1b, 0x5f, 0x0b, 0xca, 0xc2, 0x93, 0x9f, 0x9f, 0xcf, 0x6a, 0x35,
++ 0xea, 0x91, 0x8c, 0x43, 0xeb, 0x86, 0x76, 0xaf, 0x98, 0x02, 0xe5, 0xba, 0x40, 0x0c, 0x5a, 0x18,
++ 0x74, 0x9e, 0x11, 0xa0, 0xe8, 0xb0, 0x0f, 0xb6, 0xbd, 0x1a, 0xc8, 0x46, 0x86, 0x09, 0x75, 0x32,
++ 0x86, 0xf1, 0xf1, 0xca, 0x85, 0x7c, 0xff, 0x22, 0x29, 0x5f, 0x20, 0xe8, 0x01, 0xca, 0xf0, 0x24,
++ 0xb9, 0xb2, 0x90, 0xb2, 0x3d, 0x4c, 0xef, 0x56, 0xa9, 0xe2, 0x96, 0xcd, 0xfc, 0x6a, 0x79, 0x28,
++ 0x5b, 0xb8, 0x3f, 0xd0, 0xe3, 0xaa, 0x64, 0x60, 0x3f, 0xc9, 0x20, 0x57, 0xc1, 0x60, 0xcb, 0xe2,
++ 0x29, 0xd8, 0xf7, 0xc1, 0xcc, 0x61, 0x83, 0x5c, 0xfa, 0xce, 0x7f, 0xbe, 0x42, 0x22, 0x83, 0x82,
++ 0x02, 0x3f, 0x11, 0x8b, 0xce, 0xd6, 0x69, 0xfc, 0x58, 0xee, 0xc2, 0x84, 0x91, 0xe6, 0x5c, 0x01,
++ 0x34, 0xdf, 0x08, 0xb0, 0x61, 0xd1, 0x64, 0x44, 0x47, 0xfa, 0x23, 0x3b, 0x71, 0xb6, 0xc7, 0xa0,
++ 0x90, 0x0e, 0xe9, 0xe4, 0xe2, 0xb7, 0x1f, 0x18, 0xb2, 0x5c, 0x28, 0x0c, 0xd9, 0xb2, 0x50, 0x68,
++ 0xe9, 0x3a, 0x31, 0x61, 0x90, 0xab, 0x60, 0x7a, 0x6d, 0xd9, 0x8c, 0xeb, 0xa7, 0xad, 0x3e, 0xd8,
++ 0xf4, 0x7c, 0xb0, 0x47, 0xf6, 0x71, 0x00, 0x62, 0x36, 0x0b, 0xb0, 0x7f, 0x8b, 0x0f, 0xb2, 0x13,
++ 0xe6, 0x8c, 0xc2, 0xf4, 0x72, 0xc9, 0xb2, 0xf1, 0x67, 0x12, 0xfa, 0x84, 0x74, 0xd7, 0x8b, 0x53,
++ 0x6d, 0x6c, 0x39, 0x39, 0xab, 0x8c, 0xf9, 0xbd, 0x36, 0x93, 0xe1, 0x62, 0xd6, 0xfb, 0xba, 0xdf,
++ 0x9b, 0x23, 0xba, 0x9c, 0xba, 0x4f, 0xdc, 0x7d, 0x4c, 0x29, 0x71, 0x2b, 0xb6, 0xfb, 0x43, 0xb6,
++ 0x89, 0x19, 0x85, 0xe5, 0x26, 0xce, 0xf5, 0xe8, 0x15, 0x12, 0x77, 0x5a, 0x9c, 0xf8, 0x95, 0x71,
++ 0x81, 0x76, 0xcc, 0x0f, 0xaf, 0xe2, 0x72, 0x66, 0xd7, 0x5f, 0x2f, 0x66, 0x5c, 0x26, 0x2d, 0x39,
++ 0x6b, 0xa5, 0x3f, 0xb7, 0x36, 0x5c, 0x98, 0xff, 0x56, 0x44, 0x84, 0x7f, 0x46, 0x9c, 0x38, 0xc2,
++ 0xa0, 0x90, 0xf4, 0x64, 0x2b, 0xc5, 0x43, 0x71, 0xdb, 0xfc, 0x20, 0xdb, 0xfc, 0x27, 0x2c, 0x3b,
++ 0x71, 0x9e, 0x47, 0x7f, 0x50, 0x72, 0x5b, 0x2f, 0x97, 0x2e, 0xf6, 0x0a, 0xf2, 0x51, 0x58, 0xd8,
++ 0xa2, 0xf8, 0xd7, 0x25, 0x4e, 0x4f, 0xf2, 0x9a, 0x9e, 0xaa, 0xa4, 0xa0, 0xee, 0xad, 0x4b, 0x26,
++ 0xf5, 0x44, 0x3d, 0x25, 0x52, 0xd3, 0xa7, 0x7f, 0x2e, 0x3c, 0xad, 0x62, 0xfe, 0x5c, 0xc3, 0x41,
++ 0xc9, 0x0d, 0x1e, 0x16, 0xbb, 0xcd, 0x17, 0x8a, 0xed, 0x7e, 0x28, 0xd5, 0x3d, 0x03, 0x7a, 0x37,
++ 0xac, 0x53, 0x88, 0xe5, 0x5e, 0x81, 0x3e, 0x8c, 0x08, 0x69, 0x0d, 0x9b, 0x12, 0x40, 0x9c, 0x67,
++ 0x9d, 0xbb, 0x9f, 0x9b, 0xe5, 0x78, 0x37, 0x5c, 0xf4, 0xe9, 0x5d, 0xcf, 0xe0, 0x5f, 0xb0, 0x63,
++ 0xca, 0x79, 0xc3, 0xc5, 0xda, 0x05, 0x30, 0xc4, 0x4b, 0xdd, 0x7a, 0x85, 0x34, 0x0d, 0x60, 0xee,
++ 0x7f, 0x03, 0x6f, 0x9c, 0x35, 0x43, 0xb2, 0x34, 0x38, 0xc8, 0xf3, 0xe6, 0x34, 0x11, 0xbb, 0x74,
++ 0x7a, 0xf0, 0xf7, 0xd4, 0xc0, 0x7c, 0xef, 0xf9, 0xcf, 0x21, 0x97, 0x4a, 0x49, 0x2e, 0x27, 0xc5,
++ 0x88, 0xd7, 0x10, 0x7e, 0xac, 0x0d, 0x9b, 0xb6, 0x7e, 0xf5, 0x8c, 0x27, 0xdf, 0x18, 0x4f, 0x3d,
++ 0x0d, 0x71, 0x4f, 0x2f, 0x24, 0x23, 0x24, 0xca, 0x64, 0x5e, 0x1e, 0xda, 0x87, 0x3d, 0xfe, 0x00,
++ 0xd0, 0x47, 0xc4, 0xec, 0x1b, 0x35, 0x95, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
++ 0xae, 0x42, 0x60, 0x82,
++};
++
++const BITMAP_OPAQUE find_replace_xpm[1] = {{ png, sizeof( png ), "find_replace_xpm" }};
++
++//EOF
+diff --git a/bitmaps_png/sources/find.svg b/bitmaps_png/sources/find.svg
+new file mode 100644
+index 00000000..cf9d6950
+--- /dev/null
++++ b/bitmaps_png/sources/find.svg
+@@ -0,0 +1,127 @@
++<?xml version="1.0" encoding="UTF-8" standalone="no"?>
++<!-- Created with Inkscape (http://www.inkscape.org/) -->
++
++<svg
++   xmlns:dc="http://purl.org/dc/elements/1.1/"
++   xmlns:cc="http://creativecommons.org/ns#"
++   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
++   xmlns:svg="http://www.w3.org/2000/svg"
++   xmlns="http://www.w3.org/2000/svg"
++   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
++   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
++   width="48"
++   height="48"
++   viewBox="0 0 47.999999 48.000001"
++   id="svg3407"
++   version="1.1"
++   inkscape:version="0.91 r13725"
++   sodipodi:docname="find.svg">
++  <defs
++     id="defs3409" />
++  <sodipodi:namedview
++     id="base"
++     pagecolor="#ffffff"
++     bordercolor="#666666"
++     borderopacity="1.0"
++     inkscape:pageopacity="0.0"
++     inkscape:pageshadow="2"
++     inkscape:zoom="6.2979735"
++     inkscape:cx="-4.1641332"
++     inkscape:cy="16.267762"
++     inkscape:document-units="px"
++     inkscape:current-layer="layer1"
++     showgrid="false"
++     fit-margin-top="0"
++     fit-margin-left="0"
++     fit-margin-right="0"
++     fit-margin-bottom="0"
++     units="px"
++     inkscape:window-width="1054"
++     inkscape:window-height="763"
++     inkscape:window-x="285"
++     inkscape:window-y="107"
++     inkscape:window-maximized="0" />
++  <metadata
++     id="metadata3412">
++    <rdf:RDF>
++      <cc:Work
++         rdf:about="">
++        <dc:format>image/svg+xml</dc:format>
++        <dc:creator>
++          <cc:Agent>
++            <dc:title>Georges Khaznadar georgesk@debian.org</dc:title>
++          </cc:Agent>
++        </dc:creator>
++        <dc:rights>
++          <cc:Agent>
++            <dc:title>Georges Khaznadar georgesk@debian.org</dc:title>
++          </cc:Agent>
++        </dc:rights>
++      <dc:date>
++        2016
++      </dc:date>
++        <dc:type
++           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
++        <cc:license
++           rdf:resource="http://www.gnu.org/licenses/gpl-3.0.en.html" />
++        <dc:title></dc:title>
++      </cc:Work>
++    </rdf:RDF>
++  </metadata>
++  <g
++     inkscape:label="Calque 1"
++     inkscape:groupmode="layer"
++     id="layer1"
++     transform="translate(-111.73321,-964.90214)">
++    <g
++       id="g4278"
++       transform="matrix(0.05240525,0,0,0.05362195,107.95803,956.53825)">
++      <g
++         transform="matrix(0.70722383,0.7069897,-0.7069897,0.70722383,1000.3969,-173.22339)"
++         id="g4274">
++        <rect
++           style="opacity:1;fill:#c8ab37;fill-opacity:1;stroke:#a0892c;stroke-width:42.20000076;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
++           id="rect4270"
++           width="582.80231"
++           height="138.09372"
++           x="107.66628"
++           y="806.60223" />
++        <rect
++           style="opacity:1;fill:#806600;fill-opacity:1;stroke:#806600;stroke-width:35.91839981;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
++           id="rect4272"
++           width="499.37485"
++           height="41.390171"
++           x="128.69852"
++           y="854.95404" />
++      </g>
++      <ellipse
++         ry="251.42857"
++         rx="265.71429"
++         cy="462.60995"
++         cx="394.38629"
++         id="path3415"
++         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#999999;stroke-width:33.90000153;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
++      <ellipse
++         ry="200.99538"
++         rx="212.41557"
++         cy="462.60995"
++         cx="394.38629"
++         id="path3415-6"
++         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#999999;stroke-width:27.10011673;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
++      <ellipse
++         ry="179.13513"
++         rx="189.31328"
++         cy="462.60995"
++         cx="394.38629"
++         id="path3415-6-2"
++         style="opacity:1;fill:#afdde9;fill-opacity:1;stroke:#5fbcd3;stroke-width:24.15270996;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
++      <ellipse
++         ry="138.56929"
++         rx="146.44257"
++         cy="444.98392"
++         cx="399.10312"
++         id="path3415-6-2-7"
++         style="opacity:1;fill:#d5fff6;fill-opacity:1;stroke:#d5fff6;stroke-width:18.68323708;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
++    </g>
++  </g>
++</svg>
+diff --git a/bitmaps_png/sources/find_replace.svg b/bitmaps_png/sources/find_replace.svg
+new file mode 100644
+index 00000000..14f4e444
+--- /dev/null
++++ b/bitmaps_png/sources/find_replace.svg
+@@ -0,0 +1,179 @@
++<?xml version="1.0" encoding="UTF-8" standalone="no"?>
++<!-- Created with Inkscape (http://www.inkscape.org/) -->
++
++<svg
++   xmlns:dc="http://purl.org/dc/elements/1.1/"
++   xmlns:cc="http://creativecommons.org/ns#"
++   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
++   xmlns:svg="http://www.w3.org/2000/svg"
++   xmlns="http://www.w3.org/2000/svg"
++   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
++   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
++   width="48"
++   height="48"
++   viewBox="0 0 47.999999 48.000001"
++   id="svg3407"
++   version="1.1"
++   inkscape:version="0.91 r13725"
++   sodipodi:docname="find_replace.svg">
++  <defs
++     id="defs3409" />
++  <sodipodi:namedview
++     id="base"
++     pagecolor="#ffffff"
++     bordercolor="#666666"
++     borderopacity="1.0"
++     inkscape:pageopacity="0.0"
++     inkscape:pageshadow="2"
++     inkscape:zoom="6.2979735"
++     inkscape:cx="-4.1641332"
++     inkscape:cy="16.267762"
++     inkscape:document-units="px"
++     inkscape:current-layer="layer1"
++     showgrid="false"
++     fit-margin-top="0"
++     fit-margin-left="0"
++     fit-margin-right="0"
++     fit-margin-bottom="0"
++     units="px"
++     inkscape:window-width="1054"
++     inkscape:window-height="763"
++     inkscape:window-x="285"
++     inkscape:window-y="107"
++     inkscape:window-maximized="0" />
++  <metadata
++     id="metadata3412">
++    <rdf:RDF>
++      <cc:Work
++         rdf:about="">
++        <dc:format>image/svg+xml</dc:format>
++        <dc:creator>
++          <cc:Agent>
++            <dc:title>Georges Khaznadar georgesk@debian.org</dc:title>
++          </cc:Agent>
++        </dc:creator>
++        <dc:rights>
++          <cc:Agent>
++            <dc:title>Georges Khaznadar georgesk@debian.org</dc:title>
++          </cc:Agent>
++        </dc:rights>
++      <dc:date>
++        2016
++      </dc:date>
++        <dc:type
++           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
++        <cc:license
++           rdf:resource="http://www.gnu.org/licenses/gpl-3.0.en.html" />
++        <dc:title></dc:title>
++      </cc:Work>
++    </rdf:RDF>
++  </metadata>
++  <g
++     inkscape:label="Calque 1"
++     inkscape:groupmode="layer"
++     id="layer1"
++     transform="translate(-111.73321,-964.90214)">
++    <g
++       id="g4278"
++       transform="matrix(0.05240525,0,0,0.05362195,107.95803,956.53825)">
++      <g
++         transform="matrix(0.70722383,0.7069897,-0.7069897,0.70722383,1000.3969,-173.22339)"
++         id="g4274">
++        <rect
++           style="opacity:1;fill:#c8ab37;fill-opacity:1;stroke:#a0892c;stroke-width:42.20000076;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
++           id="rect4270"
++           width="582.80231"
++           height="138.09372"
++           x="107.66628"
++           y="806.60223" />
++        <rect
++           style="opacity:1;fill:#806600;fill-opacity:1;stroke:#806600;stroke-width:35.91839981;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
++           id="rect4272"
++           width="499.37485"
++           height="41.390171"
++           x="128.69852"
++           y="854.95404" />
++      </g>
++      <ellipse
++         ry="251.42857"
++         rx="265.71429"
++         cy="462.60995"
++         cx="394.38629"
++         id="path3415"
++         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#999999;stroke-width:33.90000153;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
++      <ellipse
++         ry="200.99538"
++         rx="212.41557"
++         cy="462.60995"
++         cx="394.38629"
++         id="path3415-6"
++         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#999999;stroke-width:27.10011673;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
++      <ellipse
++         ry="179.13513"
++         rx="189.31328"
++         cy="462.60995"
++         cx="394.38629"
++         id="path3415-6-2"
++         style="opacity:1;fill:#afdde9;fill-opacity:1;stroke:#5fbcd3;stroke-width:24.15270996;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
++      <ellipse
++         ry="138.56929"
++         rx="146.44257"
++         cy="444.98392"
++         cx="399.10312"
++         id="path3415-6-2-7"
++         style="opacity:1;fill:#d5fff6;fill-opacity:1;stroke:#d5fff6;stroke-width:18.68323708;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
++    </g>
++    <g
++       transform="matrix(0.71198756,0,0,0.71198756,122.83732,982.55182)"
++       id="g4306">
++      <g
++         transform="matrix(0.71432107,-0.61331366,0.75731786,1.0568324,-38.136775,57.135159)"
++         id="g4705">
++        <rect
++           style="opacity:1;fill:#806600;fill-opacity:1;stroke:none;stroke-width:1.60000002;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
++           id="rect4682-2"
++           width="38.380951"
++           height="2.6666667"
++           x="60.714287"
++           y="10.285714" />
++        <rect
++           style="opacity:1;fill:#d4aa00;fill-opacity:1;stroke:none;stroke-width:1.60000002;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
++           id="rect4682-3"
++           width="38.380951"
++           height="2.6666667"
++           x="60.619045"
++           y="8.5714293" />
++        <rect
++           style="opacity:1;fill:#ffcc00;fill-opacity:1;stroke:none;stroke-width:1.60000002;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
++           id="rect4682"
++           width="38.380951"
++           height="2.6666667"
++           x="60.666664"
++           y="6.6666665" />
++      </g>
++      <path
++         sodipodi:nodetypes="cccc"
++         inkscape:connector-curvature="0"
++         id="path4664-9"
++         d="m 6.2820726,36.343792 3.9312974,-7.673597 3.657516,4.219547 z"
++         inkscape:transform-center-y="-0.57671591"
++         inkscape:transform-center-x="-0.25368707"
++         style="opacity:1;fill:#ff9955;fill-opacity:1;stroke:#ff9955;stroke-width:1.79604721;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
++      <path
++         sodipodi:nodetypes="cccc"
++         inkscape:connector-curvature="0"
++         id="path4664"
++         d="m 5.6566233,37.145733 2.97747,-5.131122 2.4290627,2.871825 z"
++         inkscape:transform-center-y="-0.37723044"
++         inkscape:transform-center-x="-0.18073496"
++         style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22606254;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
++      <path
++         transform="matrix(0.75969402,-0.6502807,0.6502807,0.75969402,0,0)"
++         sodipodi:nodetypes="cccccc"
++         inkscape:connector-curvature="0"
++         id="rect3861"
++         d="m -9.7168102,26.917517 35.7142872,0 0,8.428571 -35.7142872,0 -11.0835828,-3.421752 z"
++         style="opacity:1;fill:none;fill-opacity:1;stroke:#501616;stroke-width:1.60000002;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
++    </g>
++  </g>
++</svg>
diff --git a/patches/debian-hacks/Remove-download-target-for-noAvhttp.patch b/patches/debian-hacks/Remove-download-target-for-noAvhttp.patch
new file mode 100644 (file)
index 0000000..1d111e6
--- /dev/null
@@ -0,0 +1,46 @@
+From: Georges Khaznadar <georgesk@debian.org>
+Date: Sat, 3 Sep 2016 17:57:10 +0200
+Subject: Remove download target for noAvhttp
+
+In Debian we don't load anything dynamically from the net while package
+built.
+---
+ CMakeModules/download_avhttp.cmake | 27 ---------------------------
+ 1 file changed, 27 deletions(-)
+
+diff --git a/CMakeModules/download_avhttp.cmake b/CMakeModules/download_avhttp.cmake
+index abc52b7e..1827273d 100644
+--- a/CMakeModules/download_avhttp.cmake
++++ b/CMakeModules/download_avhttp.cmake
+@@ -35,31 +35,4 @@
+ #-----</configure>-----------------------------------------------------------------------------------
+-# Where the library is to be installed.
+-set( PREFIX ${DOWNLOAD_DIR}/avhttp )
+-
+-if( KICAD_SKIP_BOOST )
+-    set( AVHTTP_DEPEND "" )
+-else()
+-    set( AVHTTP_DEPEND "boost" )
+-endif()
+-
+-
+-# Install the AVHTTP header only library ${PREFIX}
+-ExternalProject_Add( avhttp
+-    PREFIX          ${PREFIX}
+-    DOWNLOAD_DIR    ${DOWNLOAD_DIR}     # no true download yet
+-
+-    # grab it from a local zip file for now, cmake caller's source dir
+-    URL             ${CMAKE_CURRENT_SOURCE_DIR}/avhttp-master.zip
+-    DEPENDS         ${AVHTTP_DEPEND}
+-
+-    CONFIGURE_COMMAND ""
+-
+-    BUILD_COMMAND   ""
+-    INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR> <INSTALL_DIR>
+-    )
+-
+-
+-set( AVHTTP_INCLUDE_DIR  "${PREFIX}/include" CACHE FILEPATH "AVHTTP include directory" )
+ mark_as_advanced( AVHTTP_INCLUDE_DIR )
diff --git a/patches/debian-hacks/Removing-hyphen-inside-KICAD_FULL_VERSION.patch b/patches/debian-hacks/Removing-hyphen-inside-KICAD_FULL_VERSION.patch
new file mode 100644 (file)
index 0000000..29a7bb2
--- /dev/null
@@ -0,0 +1,26 @@
+From: Carsten Schoenert <c.schoenert@t-online.de>
+Date: Sat, 17 Dec 2016 20:11:25 +0100
+Subject: Removing hyphen inside KICAD_FULL_VERSION
+
+Upstream is providing the possibility to append various strings into the
+KICAD_FULL_VERSION if needed. We can use this to append the debian
+specific version on the upstream version.
+For this the KICAD_FULL_VERSION needs to be merged without the hyphen
+'-' so the version is reflecting the debian version in real.
+---
+ CMakeModules/WriteVersionHeader.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeModules/WriteVersionHeader.cmake b/CMakeModules/WriteVersionHeader.cmake
+index 013a36ac..c1cd7f60 100644
+--- a/CMakeModules/WriteVersionHeader.cmake
++++ b/CMakeModules/WriteVersionHeader.cmake
+@@ -47,7 +47,7 @@ endif()
+ # Optional user version information defined at configuration.
+ if( KICAD_VERSION_EXTRA )
+-    set( KICAD_VERSION_FULL "${KICAD_VERSION_FULL}-${KICAD_VERSION_EXTRA}" )
++    set( KICAD_VERSION_FULL "${KICAD_VERSION_FULL}${KICAD_VERSION_EXTRA}" )
+ endif()
+ set( _wvh_new_version_text
diff --git a/patches/fixes/Add-missing-dependency-github_plugin-pcbcommon.patch b/patches/fixes/Add-missing-dependency-github_plugin-pcbcommon.patch
new file mode 100644 (file)
index 0000000..6d3ee1b
--- /dev/null
@@ -0,0 +1,22 @@
+From: Simon Richter <Simon.Richter@hogyros.de>
+Date: Thu, 5 May 2016 10:01:38 +0200
+Subject: Add missing dependency github_plugin -> pcbcommon
+
+The GitHub plugin needs the generated PCB parser code.
+---
+ pcbnew/CMakeLists.txt | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/pcbnew/CMakeLists.txt b/pcbnew/CMakeLists.txt
+index a0454bec..4fe1978e 100644
+--- a/pcbnew/CMakeLists.txt
++++ b/pcbnew/CMakeLists.txt
+@@ -538,6 +538,8 @@ add_subdirectory( pcad2kicadpcb_plugin )
+ if( BUILD_GITHUB_PLUGIN )
+     add_subdirectory( github )
+     add_dependencies( github_plugin lib-dependencies )
++    # github_plugin depends on make_lexer outputs in common
++    add_dependencies( github_plugin pcbcommon )
+ endif()
diff --git a/patches/fixes/Fix-FTBFS-with-Boost-1.61.patch b/patches/fixes/Fix-FTBFS-with-Boost-1.61.patch
new file mode 100644 (file)
index 0000000..71bc8ef
--- /dev/null
@@ -0,0 +1,397 @@
+From: Michael Steinberg <michsteinb@gmail.com>
+Date: Sat, 3 Sep 2016 17:48:20 +0200
+Subject: Fix FTBFS with Boost 1.61
+
+The attached patch includes two commits from upstream:
+  - boost::context fixes to make it compatible with boost 1.61
+  - use a guarded stack for coroutines in boost version 1.61
+
+https://github.com/KiCad/kicad-source-mirror/commit/06d4894fdbeb00727cdcc667b8899ad73d8eb1c2
+https://github.com/KiCad/kicad-source-mirror/commit/78bc3c65de6c03d19be9902327d08cd4d87c229c
+
+Closes: #834246
+---
+ common/tool/tool_manager.cpp    |   4 +-
+ include/tool/coroutine.h        | 163 ++++++++++++++++++++++++++--------------
+ include/tool/tool_base.h        |   7 +-
+ include/tool/tool_interactive.h |   3 +-
+ 4 files changed, 116 insertions(+), 61 deletions(-)
+
+diff --git a/common/tool/tool_manager.cpp b/common/tool/tool_manager.cpp
+index 447ab990..ab11b13e 100644
+--- a/common/tool/tool_manager.cpp
++++ b/common/tool/tool_manager.cpp
+@@ -542,11 +542,11 @@ void TOOL_MANAGER::dispatchInternal( const TOOL_EVENT& aEvent )
+                     if( st->cofunc )
+                         st->Push();
++                    st->cofunc = new COROUTINE<int, const TOOL_EVENT&>( tr.second );
++
+                     // as the state changes, the transition table has to be set up again
+                     st->transitions.clear();
+-                    st->cofunc = new COROUTINE<int, const TOOL_EVENT&>( tr.second );
+-
+                     // got match? Run the handler.
+                     st->cofunc->Call( aEvent );
+diff --git a/include/tool/coroutine.h b/include/tool/coroutine.h
+index c7eaf5fa..8e472ca6 100644
+--- a/include/tool/coroutine.h
++++ b/include/tool/coroutine.h
+@@ -3,6 +3,7 @@
+  *
+  * Copyright (C) 2013 CERN
+  * @author Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
++ * Copyright (C) 2016 KiCad Developers, see AUTHORS.txt for contributors.
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License
+@@ -27,10 +28,15 @@
+ #include <cstdlib>
+-#include <boost/context/fcontext.hpp>
+ #include <boost/version.hpp>
++#include <type_traits>
+-#include "delegate.h"
++#if BOOST_VERSION <= 106000
++#include <boost/context/fcontext.hpp>
++#else
++#include <boost/context/execution_context.hpp>
++#include <boost/context/protected_fixedsize_stack.hpp>
++#endif
+ /**
+  *  Class COROUNTINE.
+@@ -53,13 +59,12 @@
+  *  See coroutine_example.cpp for sample code.
+  */
+-template <class ReturnType, class ArgType>
++template <typename ReturnType, typename ArgType>
+ class COROUTINE
+ {
+ public:
+     COROUTINE() :
+-        m_saved( NULL ), m_self( NULL ), m_stack( NULL ), m_stackSize( c_defaultStackSize ),
+-        m_running( false )
++        COROUTINE( nullptr )
+     {
+     }
+@@ -69,8 +74,7 @@ public:
+      */
+     template <class T>
+     COROUTINE( T* object, ReturnType(T::* ptr)( ArgType ) ) :
+-        m_func( object, ptr ), m_self( NULL ), m_saved( NULL ), m_stack( NULL ),
+-        m_stackSize( c_defaultStackSize ), m_running( false )
++        COROUTINE( std::bind( ptr, object, std::placeholders::_1 ) )
+     {
+     }
+@@ -78,9 +82,15 @@ public:
+      * Constructor
+      * Creates a coroutine from a delegate object
+      */
+-    COROUTINE( DELEGATE<ReturnType, ArgType> aEntry ) :
+-        m_func( aEntry ), m_saved( NULL ), m_self( NULL ), m_stack( NULL ),
+-        m_stackSize( c_defaultStackSize ), m_running( false )
++    COROUTINE( std::function<ReturnType(ArgType)> aEntry ) :
++        m_func( std::move( aEntry ) ),
++        m_running( false ),
++#if BOOST_VERSION <= 106000
++        m_stack( nullptr ),
++        m_stackSize( c_defaultStackSize ),
++#endif
++        m_caller( nullptr ),
++        m_callee( nullptr )
+     {
+         // Avoid not initialized members, and make static analysers quiet
+         m_args = 0;
+@@ -89,18 +99,26 @@ public:
+     ~COROUTINE()
+     {
+-        if( m_saved )
+-            delete m_saved;
+-
+ #if BOOST_VERSION >= 105600
+-        if( m_self )
+-            delete m_self;
++        delete m_callee;
+ #endif
++#if BOOST_VERSION <= 106000
++        delete m_caller;
++
+         if( m_stack )
+             free( m_stack );
++#endif
+     }
++private:
++#if BOOST_VERSION <= 106000
++    using context_type = boost::context::fcontext_t;
++#else
++    using context_type = boost::context::execution_context<COROUTINE*>;
++#endif
++
++public:
+     /**
+      * Function Yield()
+      *
+@@ -110,7 +128,12 @@ public:
+      */
+     void Yield()
+     {
+-        jump( m_self, m_saved, 0 );
++#if BOOST_VERSION <= 106000
++        jump( m_callee, m_caller, false );
++#else
++        auto result = (*m_caller)( this );
++        *m_caller = std::move( std::get<0>( result ) );
++#endif
+     }
+     /**
+@@ -122,7 +145,11 @@ public:
+     void Yield( ReturnType& aRetVal )
+     {
+         m_retVal = aRetVal;
+-        jump( m_self, m_saved, 0 );
++#if BOOST_VERSION <= 106000
++        jump( m_callee, m_caller, false );
++#else
++        m_caller( this );
++#endif
+     }
+     /**
+@@ -130,9 +157,9 @@ public:
+      *
+      * Defines the entry point for the coroutine, if not set in the constructor.
+      */
+-    void SetEntry( DELEGATE<ReturnType, ArgType> aEntry )
++    void SetEntry( std::function<ReturnType(ArgType)> aEntry )
+     {
+-        m_func = aEntry;
++        m_func = std::move( aEntry );
+     }
+     /* Function Call()
+@@ -143,6 +170,10 @@ public:
+      */
+     bool Call( ArgType aArgs )
+     {
++        assert( m_callee == NULL );
++        assert( m_caller == NULL );
++
++#if BOOST_VERSION <= 106000
+         // fixme: Clean up stack stuff. Add a guard
+         m_stack = malloc( c_defaultStackSize );
+@@ -151,22 +182,32 @@ public:
+         // correct the stack size
+         m_stackSize -= ( (size_t) m_stack + m_stackSize - (size_t) sp );
+-
+-        assert( m_self == NULL );
+-        assert( m_saved == NULL );
++#endif
+         m_args = &aArgs;
+-#if BOOST_VERSION >= 105600
+-        m_self = new boost::context::fcontext_t();
+-        *m_self = boost::context::make_fcontext( sp, m_stackSize, callerStub );
++
++#if BOOST_VERSION < 105600
++        m_callee = boost::context::make_fcontext( sp, m_stackSize, callerStub );
++#elif BOOST_VERSION <= 106000
++        m_callee = new context_type( boost::context::make_fcontext( sp, m_stackSize, callerStub ) );
+ #else
+-        m_self = boost::context::make_fcontext( sp, m_stackSize, callerStub );
++        m_callee = new context_type( std::allocator_arg_t(),
++                    boost::context::protected_fixedsize_stack( c_defaultStackSize ), &COROUTINE::callerStub );
++#endif
++
++#if BOOST_VERSION <= 106000
++        m_caller = new context_type();
+ #endif
+-        m_saved = new boost::context::fcontext_t();
+         m_running = true;
++
+         // off we go!
+-        jump( m_saved, m_self, reinterpret_cast<intptr_t>( this ) );
++#if BOOST_VERSION <= 106000
++        jump( m_caller, m_callee, reinterpret_cast<intptr_t>( this ) );
++#else
++        auto result = (*m_callee)( this );
++        *m_callee = std::move( std::get<0>( result ) );
++#endif
+         return m_running;
+     }
+@@ -179,7 +220,12 @@ public:
+      */
+     bool Resume()
+     {
+-        jump( m_saved, m_self, 0 );
++#if BOOST_VERSION <= 106000
++        jump( m_caller, m_callee, false );
++#else
++        auto result = (*m_callee)( this );
++        *m_callee = std::move( std::get<0>( result ) );
++#endif
+         return m_running;
+     }
+@@ -208,61 +254,66 @@ private:
+     static const int c_defaultStackSize = 2000000;    // fixme: make configurable
+     /* real entry point of the coroutine */
++#if BOOST_VERSION <= 106000
+     static void callerStub( intptr_t aData )
++#else
++    static context_type callerStub( context_type caller, COROUTINE* cor )
++#endif
+     {
+         // get pointer to self
++#if BOOST_VERSION <= 106000
+         COROUTINE<ReturnType, ArgType>* cor = reinterpret_cast<COROUTINE<ReturnType, ArgType>*>( aData );
++#else
++        cor->m_caller = &caller;
++#endif
+         // call the coroutine method
+-        cor->m_retVal = cor->m_func( *cor->m_args );
++        cor->m_retVal = cor->m_func( *( cor->m_args ) );
+         cor->m_running = false;
+         // go back to wherever we came from.
+-        jump( cor->m_self, cor->m_saved, 0 );    // reinterpret_cast<intptr_t>( this ));
++#if BOOST_VERSION <= 106000
++        jump( cor->m_callee, cor->m_caller, 0 );
++#else
++        return caller;
++#endif
+     }
+     ///> Wrapper for jump_fcontext to assure compatibility between different boost versions
+-    static inline intptr_t jump(boost::context::fcontext_t* aOld, boost::context::fcontext_t* aNew,
++#if BOOST_VERSION <= 106000
++    static inline intptr_t jump( context_type* aOld, context_type* aNew,
+                                 intptr_t aP, bool aPreserveFPU = true )
+     {
+-#if BOOST_VERSION >= 105600
+-        return boost::context::jump_fcontext( aOld, *aNew, aP, aPreserveFPU );
+-#else
++#if BOOST_VERSION < 105600
+         return boost::context::jump_fcontext( aOld, aNew, aP, aPreserveFPU );
++#else
++        return boost::context::jump_fcontext( aOld, *aNew, aP, aPreserveFPU );
+ #endif
+     }
++#endif
+-    template <typename T>
+-    struct strip_ref
+-    {
+-        typedef T result;
+-    };
++    std::function<ReturnType(ArgType)> m_func;
+-    template <typename T>
+-    struct strip_ref<T&>
+-    {
+-        typedef T result;
+-    };
++    bool m_running;
+-    DELEGATE<ReturnType, ArgType> m_func;
++#if BOOST_VERSION <= 106000
++    ///< coroutine stack
++    void* m_stack;
++
++    size_t m_stackSize;
++#endif
+     ///< pointer to coroutine entry arguments. Stripped of references
+     ///< to avoid compiler errors.
+-    typename strip_ref<ArgType>::result* m_args;
++    typename std::remove_reference<ArgType>::type* m_args;
++
+     ReturnType m_retVal;
+     ///< saved caller context
+-    boost::context::fcontext_t* m_saved;
++    context_type* m_caller;
+     ///< saved coroutine context
+-    boost::context::fcontext_t* m_self;
+-
+-    ///< coroutine stack
+-    void* m_stack;
+-
+-    size_t m_stackSize;
+-
+-    bool m_running;
++    context_type* m_callee;
+ };
+ #endif
+diff --git a/include/tool/tool_base.h b/include/tool/tool_base.h
+index 584a979c..3bef987c 100644
+--- a/include/tool/tool_base.h
++++ b/include/tool/tool_base.h
+@@ -3,6 +3,7 @@
+  *
+  * Copyright (C) 2013 CERN
+  * @author Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
++ * Copyright (C) 2016 KiCad Developers, see AUTHORS.txt for contributors.
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License
+@@ -31,7 +32,7 @@
+ #include <tool/tool_event.h>
+ #include <tool/tool_settings.h>
+-#include <tool/delegate.h>
++#include <functional>
+ class EDA_ITEM;
+ class TOOL_MANAGER;
+@@ -53,7 +54,9 @@ enum TOOL_TYPE
+ /// Unique identifier for tools
+ typedef int TOOL_ID;
+-typedef DELEGATE<int, const TOOL_EVENT&> TOOL_STATE_FUNC;
++
++using TOOL_STATE_FUNC = std::function<int(const TOOL_EVENT&)>;
++
+ /**
+  * Class TOOL_BASE
+diff --git a/include/tool/tool_interactive.h b/include/tool/tool_interactive.h
+index 17d2de71..240eb580 100644
+--- a/include/tool/tool_interactive.h
++++ b/include/tool/tool_interactive.h
+@@ -3,6 +3,7 @@
+  *
+  * Copyright (C) 2013 CERN
+  * @author Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
++ * Copyright (C) 2016 KiCad Developers, see AUTHORS.txt for contributors.
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License
+@@ -113,7 +114,7 @@ template <class T>
+ void TOOL_INTERACTIVE::Go( int (T::* aStateFunc)( const TOOL_EVENT& ),
+                            const TOOL_EVENT_LIST& aConditions )
+ {
+-    TOOL_STATE_FUNC sptr( static_cast<T*>( this ), aStateFunc );
++    TOOL_STATE_FUNC sptr = std::bind( aStateFunc, static_cast<T*>( this ), std::placeholders::_1 );
+     goInternal( sptr, aConditions );
+ }
diff --git a/patches/fixes/Fix-issue-170-for-real.patch b/patches/fixes/Fix-issue-170-for-real.patch
new file mode 100644 (file)
index 0000000..8fa20fe
--- /dev/null
@@ -0,0 +1,34 @@
+From: =?utf-8?q?Nick_=C3=98stergaard?= <oe.nick@gmail.com>
+Date: Sun, 18 Dec 2016 22:16:22 +0100
+Subject: Fix issue #170 -- for real
+
+(Notes by Carsten Schoenert)
+Upstream fix for kicad-doc commited after the release of v4.0.5.
+This patch will automatically fall out of the patch queue with the next
+version 4.0.6.
+This commit isn't fixing the installation of the default images. For
+this we need another fix.
+---
+ doc/CMakeModules/KiCadDocumentation.cmake | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/doc/CMakeModules/KiCadDocumentation.cmake b/doc/CMakeModules/KiCadDocumentation.cmake
+index e4c91e46..884f46bf 100644
+--- a/doc/CMakeModules/KiCadDocumentation.cmake
++++ b/doc/CMakeModules/KiCadDocumentation.cmake
+@@ -136,7 +136,14 @@ macro( KiCadDocumentation DOCNAME )
+             add_dependencies( ${DOCNAME} ${DOCNAME}_html_${LANGUAGE} )
+             install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${LANGUAGE}/${DOCNAME}.html DESTINATION ${KICAD_DOC_PATH}/${LANGUAGE} COMPONENT html-${LANGUAGE} )
+-            install( DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${LANGUAGE}/images/ DESTINATION ${KICAD_DOC_PATH}/${LANGUAGE}/images COMPONENT html-${LANGUAGE} OPTIONAL PATTERN "*.png")
++
++            # It seems to be nescesary to use diffrent install commands to
++            # install the images properly without having other lagunages
++            # polluting the images folder
++            install( DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${LANGUAGE}/images/${LANGUAGE} DESTINATION ${KICAD_DOC_PATH}/${LANGUAGE}/images COMPONENT html-${LANGUAGE} OPTIONAL PATTERN "*.png")
++            install( DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${LANGUAGE}/images/icons DESTINATION ${KICAD_DOC_PATH}/${LANGUAGE}/images COMPONENT html-${LANGUAGE} OPTIONAL PATTERN "*.png")
++            file(GLOB UNIVERSAL_IMAGES "${CMAKE_CURRENT_BINARY_DIR}/${LANGUAGE}/images/*.png")
++            install( FILES ${UNIVERSAL_IMAGES} DESTINATION ${KICAD_DOC_PATH}/${LANGUAGE}/images COMPONENT html-${LANGUAGE} )
+         endif()
diff --git a/patches/fixes/Fixing-some-spelling-issues.patch b/patches/fixes/Fixing-some-spelling-issues.patch
new file mode 100644 (file)
index 0000000..42b28b9
--- /dev/null
@@ -0,0 +1,948 @@
+From: Carsten Schoenert <c.schoenert@t-online.de>
+Date: Fri, 9 Sep 2016 11:12:02 +0200
+Subject: Fixing some spelling issues
+
+Lintian has found some spelling issues which are not pushed upstream for
+release 4.x.
+---
+ Documentation/changelogs/CHANGELOG-2008.txt        |  2 +-
+ Documentation/changelogs/CHANGELOG-2009.txt        |  2 +-
+ common/draw_panel.cpp                              |  2 +-
+ common/fpid.cpp                                    |  2 +-
+ common/kiway_player.cpp                            |  2 +-
+ common/page_layout/page_layout_reader.cpp          |  2 +-
+ common/pgm_base.cpp                                |  2 +-
+ .../eeschema_component_library_editor.adoc         |  2 +-
+ eeschema/dialogs/dialog_eeschema_config_fbp.cpp    |  2 +-
+ eeschema/dialogs/dialog_eeschema_config_fbp.fbp    |  2 +-
+ eeschema/dialogs/dialog_print_using_printer.cpp    |  4 ++--
+ eeschema/edit_label.cpp                            |  2 +-
+ eeschema/erc.cpp                                   |  4 ++--
+ eeschema/erc.h                                     |  4 ++--
+ eeschema/pinedit.cpp                               |  2 +-
+ eeschema/sch_base_frame.h                          |  2 +-
+ eeschema/sch_screen.cpp                            |  6 ++---
+ eeschema/schframe.h                                |  4 ++--
+ eeschema/viewlib_frame.cpp                         |  2 +-
+ gerbview/gerbview_frame.h                          |  2 +-
+ include/class_bitmap_base.h                        |  2 +-
+ include/class_drawpanel.h                          |  2 +-
+ include/class_undoredo_container.h                 |  2 +-
+ include/dsnlexer.h                                 |  2 +-
+ include/gal/opengl/glm/ext.hpp                     |  2 +-
+ include/gal/opengl/glm/gtc/matrix_transform.hpp    | 26 +++++++++++-----------
+ include/gal/opengl/glm/gtc/random.hpp              |  2 +-
+ pagelayout_editor/pl_editor_frame.h                |  2 +-
+ pcbnew/class_board.cpp                             |  2 +-
+ pcbnew/connect.cpp                                 |  4 ++--
+ pcbnew/connect.h                                   |  2 +-
+ pcbnew/dialogs/dialog_copper_zones_base.cpp        |  2 +-
+ pcbnew/dialogs/dialog_copper_zones_base.fbp        |  2 +-
+ pcbnew/dialogs/dialog_design_rules.cpp             |  2 +-
+ pcbnew/dialogs/dialog_export_vrml.cpp              |  2 +-
+ pcbnew/dialogs/dialog_freeroute_exchange_help.html |  2 +-
+ pcbnew/dialogs/dialog_gendrill_base.cpp            |  6 ++---
+ pcbnew/dialogs/dialog_gendrill_base.fbp            |  6 ++---
+ .../dialog_keepout_area_properties_base.cpp        |  2 +-
+ .../dialog_keepout_area_properties_base.fbp        |  2 +-
+ .../dialog_non_copper_zones_properties_base.cpp    |  2 +-
+ .../dialog_non_copper_zones_properties_base.fbp    |  2 +-
+ pcbnew/dialogs/wizard_3DShape_Libs_downloader.cpp  |  2 +-
+ pcbnew/drc_clearance_test_functions.cpp            |  4 ++--
+ pcbnew/onrightclick.cpp                            |  2 +-
+ pcbnew/plot_board_layers.cpp                       |  2 +-
+ pcbnew/ratsnest.cpp                                |  4 ++--
+ pcbnew/zones_by_polygon.cpp                        |  6 ++---
+ pcbnew/zones_functions_for_undo_redo.cpp           |  4 ++--
+ pcbnew/zones_test_and_combine_areas.cpp            |  2 +-
+ 50 files changed, 78 insertions(+), 78 deletions(-)
+
+diff --git a/Documentation/changelogs/CHANGELOG-2008.txt b/Documentation/changelogs/CHANGELOG-2008.txt
+index d2105857..c19727d4 100644
+--- a/Documentation/changelogs/CHANGELOG-2008.txt
++++ b/Documentation/changelogs/CHANGELOG-2008.txt
+@@ -1128,7 +1128,7 @@ removed: (common/infospgm.cpp) is no longer needed
+     When a sheet is deleted by block delete. it is put in undo list.
+     It is really deleted after 10 changes (when the undo list is full).
+     At this time, the associated data is also deleted.
+-    If an other (not deleted) sheet shares the same data, this data is lost.
++    If another (not deleted) sheet shares the same data, this data is lost.
+     Need work to solve this problem and keep the undo/redo feature.
+diff --git a/Documentation/changelogs/CHANGELOG-2009.txt b/Documentation/changelogs/CHANGELOG-2009.txt
+index fbdae4fb..d58d79ff 100644
+--- a/Documentation/changelogs/CHANGELOG-2009.txt
++++ b/Documentation/changelogs/CHANGELOG-2009.txt
+@@ -281,7 +281,7 @@ Component library object and other minor improvements.
+     Speed up ZONE_CONTAINER::Copy method
+     Speed up NETINFO_ITEM* BOARD::FindNet( const wxString& aNetname ) by using afast binary search
+     Switch to kbool V2.1. This version solves others problems in zones calculations.
+-    Adding an other way to generate thermal shape; DO NOT USE: this is for kbool tests only
++    Adding another way to generate thermal shape; DO NOT USE: this is for kbool tests only
+     (I am thinking some bugs are remaining, so i am always working on kbool tests.
+     Klaas Olwerda is supporting me)
+diff --git a/common/draw_panel.cpp b/common/draw_panel.cpp
+index 3bd1103a..98fd2824 100644
+--- a/common/draw_panel.cpp
++++ b/common/draw_panel.cpp
+@@ -124,7 +124,7 @@ EDA_DRAW_PANEL::EDA_DRAW_PANEL( EDA_DRAW_FRAME* parent, int id,
+     m_ignoreMouseEvents = false;
+     // Be sure a mouse release button event will be ignored when creating the canvas
+     // if the mouse click was not made inside the canvas (can happen sometimes, when
+-    // launching an editor from a double click made in an other frame)
++    // launching an editor from a double click made in another frame)
+     m_ignoreNextLeftButtonRelease = true;
+     m_mouseCaptureCallback = NULL;
+diff --git a/common/fpid.cpp b/common/fpid.cpp
+index ba70c67d..c410bbd4 100644
+--- a/common/fpid.cpp
++++ b/common/fpid.cpp
+@@ -167,7 +167,7 @@ int FPID::Parse( const UTF8& aId )
+     // Be sure the footprint name is valid.
+     // Some chars can be found in board file (in old board files
+-    // or converted files from an other EDA tool
++    // or converted files from another EDA tool
+     std::string fpname = aId.substr( partNdx, revNdx-partNdx );
+     ReplaceIllegalFileNameChars( &fpname, '_' );
+     SetFootprintName( UTF8( fpname ) );
+diff --git a/common/kiway_player.cpp b/common/kiway_player.cpp
+index a33acc1b..d6fc5ae5 100644
+--- a/common/kiway_player.cpp
++++ b/common/kiway_player.cpp
+@@ -111,7 +111,7 @@ bool KIWAY_PLAYER::ShowModal( wxString* aResult, wxWindow* aResultantFocusWindow
+         // We do not want to disable top level windows which are child of the modal one,
+         // if they are enabled.
+         // An example is an aui toolbar which was moved
+-        // or a dialog or an other frame or miniframe opened by the modal one.
++        // or a dialog or another frame or miniframe opened by the modal one.
+         wxWindowList wlist = GetChildren();
+         std::vector<wxWindow*> enabledTopLevelWindows;
+diff --git a/common/page_layout/page_layout_reader.cpp b/common/page_layout/page_layout_reader.cpp
+index a282989a..82343b25 100644
+--- a/common/page_layout/page_layout_reader.cpp
++++ b/common/page_layout/page_layout_reader.cpp
+@@ -488,7 +488,7 @@ void PAGE_LAYOUT_READER_PARSER::parseGraphic( WORKSHEET_DATAITEM * aItem )
+             token = NextTok();
+         else
+         {
+-            // If an other token than T_LEFT is read here, this is an error
++            // If another token than T_LEFT is read here, this is an error
+             // however, due to a old bug in kicad, the token T_end can be found
+             // without T_LEFT in a very few .wks files (perhaps only one in a demo).
+             // So this ugly hack disables the error detection.
+diff --git a/common/pgm_base.cpp b/common/pgm_base.cpp
+index 07286334..e4894380 100644
+--- a/common/pgm_base.cpp
++++ b/common/pgm_base.cpp
+@@ -669,7 +669,7 @@ bool PGM_BASE::SetLanguage( bool first_time )
+     if( !first_time )
+     {
+-        // If we are here, the user has selected an other language.
++        // If we are here, the user has selected another language.
+         // Therefore the new prefered language name is stored in common config.
+         // Do NOT store the wxWidgets language Id, it can change between wxWidgets
+         // versions, for a given language
+diff --git a/doc/src/eeschema/eeschema_component_library_editor.adoc b/doc/src/eeschema/eeschema_component_library_editor.adoc
+index 29312a91..4b76668e 100644
+--- a/doc/src/eeschema/eeschema_component_library_editor.adoc
++++ b/doc/src/eeschema/eeschema_component_library_editor.adoc
+@@ -406,7 +406,7 @@ existing component.
+   image:images/icons/save_part_in_mem.png[icons/save_part_in_mem_png]
+   or save to a new library by clicking the 
+   image:images/icons/new_library.png[icons/new_library_png]
+-  or if you want to save this new component in an other existing
++  or if you want to save this new component in another existing
+   library select the other library by clicking on the
+   image:images/icons/library.png[icons/library_png]
+   and save the new component.
+diff --git a/eeschema/dialogs/dialog_eeschema_config_fbp.cpp b/eeschema/dialogs/dialog_eeschema_config_fbp.cpp
+index 5ac72bcc..c803aa57 100644
+--- a/eeschema/dialogs/dialog_eeschema_config_fbp.cpp
++++ b/eeschema/dialogs/dialog_eeschema_config_fbp.cpp
+@@ -27,7 +27,7 @@ DIALOG_EESCHEMA_CONFIG_FBP::DIALOG_EESCHEMA_CONFIG_FBP( wxWindow* parent, wxWind
+       bSizerLibsChoice = new wxBoxSizer( wxHORIZONTAL );
+       
+       m_ListLibr = new wxListBox( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_EXTENDED|wxLB_HSCROLL|wxLB_NEEDED_SB|wxLB_SINGLE ); 
+-      m_ListLibr->SetToolTip( _("List of active library files.\nOnly library files in this list are loaded by Eeschema.\nThe order of this list is important:\nEeschema searchs for a given component using this list order priority.") );
++      m_ListLibr->SetToolTip( _("List of active library files.\nOnly library files in this list are loaded by Eeschema.\nThe order of this list is important:\nEeschema searches for a given component using this list order priority.") );
+       m_ListLibr->SetMinSize( wxSize( 400,250 ) );
+       
+       bSizerLibsChoice->Add( m_ListLibr, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
+diff --git a/eeschema/dialogs/dialog_eeschema_config_fbp.fbp b/eeschema/dialogs/dialog_eeschema_config_fbp.fbp
+index 72fcc430..2abdd170 100644
+--- a/eeschema/dialogs/dialog_eeschema_config_fbp.fbp
++++ b/eeschema/dialogs/dialog_eeschema_config_fbp.fbp
+@@ -247,7 +247,7 @@
+                                         <property name="style">wxLB_EXTENDED|wxLB_HSCROLL|wxLB_NEEDED_SB|wxLB_SINGLE</property>
+                                         <property name="subclass"></property>
+                                         <property name="toolbar_pane">0</property>
+-                                        <property name="tooltip">List of active library files.&#x0A;Only library files in this list are loaded by Eeschema.&#x0A;The order of this list is important:&#x0A;Eeschema searchs for a given component using this list order priority.</property>
++                                        <property name="tooltip">List of active library files.&#x0A;Only library files in this list are loaded by Eeschema.&#x0A;The order of this list is important:&#x0A;Eeschema searches for a given component using this list order priority.</property>
+                                         <property name="validator_data_type"></property>
+                                         <property name="validator_style">wxFILTER_NONE</property>
+                                         <property name="validator_type">wxDefaultValidator</property>
+diff --git a/eeschema/dialogs/dialog_print_using_printer.cpp b/eeschema/dialogs/dialog_print_using_printer.cpp
+index 09257bda..874a6d48 100644
+--- a/eeschema/dialogs/dialog_print_using_printer.cpp
++++ b/eeschema/dialogs/dialog_print_using_printer.cpp
+@@ -272,7 +272,7 @@ void DIALOG_PRINT_USING_PRINTER::OnPrintPreview( wxCommandEvent& event )
+     // We use here wxPreviewFrame_WindowModal option to make the wxPrintPreview frame
+     // modal for its caller only.
+-    // An other reason is the fact when closing the frame without this option,
++    // another reason is the fact when closing the frame without this option,
+     // all top level frames are reenabled.
+     // With this option, only the parent is reenabled.
+     // Reenabling all top level frames should be made by the parent dialog.
+@@ -439,7 +439,7 @@ void SCH_PRINTOUT::DrawPage( SCH_SCREEN* aScreen )
+     // For an obscure reason, OffsetLogicalOrigin creates issues,
+     // under some circumstances, when yoffset is not always null
+-    // and changes from a page to an other page
++    // and changes from a page to another page
+     // This is only a workaround, not a fix
+     // see https://bugs.launchpad.net/kicad/+bug/1464773
+     // xoffset does not create issues.
+diff --git a/eeschema/edit_label.cpp b/eeschema/edit_label.cpp
+index 2be1d87b..060db3bc 100644
+--- a/eeschema/edit_label.cpp
++++ b/eeschema/edit_label.cpp
+@@ -131,7 +131,7 @@ SCH_TEXT* SCH_EDIT_FRAME::CreateNewText( wxDC* aDC, int aType )
+ /*
+- * OnConvertTextType is a command event handler to change a text type to an other one.
++ * OnConvertTextType is a command event handler to change a text type to another one.
+  * The new text, label, hierarchical label, or global label is created from the old text
+  * The old text is deleted.
+  * A tricky case is when the 'old" text is being edited (i.e. moving)
+diff --git a/eeschema/erc.cpp b/eeschema/erc.cpp
+index 099249cf..0ae9c5c2 100644
+--- a/eeschema/erc.cpp
++++ b/eeschema/erc.cpp
+@@ -405,7 +405,7 @@ void TestOthersItems( NETLIST_OBJECT_LIST* aList,
+                 {
+                     /* This pin is not connected: for multiple part per
+                      * package, and duplicated pin,
+-                     * search for an other instance of this pin
++                     * search for another instance of this pin
+                      * this will be flagged only if all instances of this pin
+                      * are not connected
+                      * TODO test also if instances connected are connected to
+@@ -430,7 +430,7 @@ void TestOthersItems( NETLIST_OBJECT_LIST* aList,
+                             continue;
+                         // Same component and same pin. Do dot create error for this pin
+-                        // if the other pin is connected (i.e. if duplicate net has an other
++                        // if the other pin is connected (i.e. if duplicate net has another
+                         // item)
+                         if( (duplicate > 0)
+                           && ( aList->GetItemNet( duplicate ) ==
+diff --git a/eeschema/erc.h b/eeschema/erc.h
+index 708fb6a4..8654b487 100644
+--- a/eeschema/erc.h
++++ b/eeschema/erc.h
+@@ -53,8 +53,8 @@ extern const wxString CommentERC_V[];
+ #define ERCE_DUPLICATE_SHEET_NAME 1    // duplicate sheet names within a given sheet
+ #define ERCE_PIN_NOT_CONNECTED    2    // pin not connected and not no connect symbol
+ #define ERCE_PIN_NOT_DRIVEN       3    // pin connected to some others pins but no pin to drive it
+-#define ERCE_PIN_TO_PIN_WARNING   4    // pin connected to an other pin: warning level
+-#define ERCE_PIN_TO_PIN_ERROR     5    // pin connected to an other pin: error level
++#define ERCE_PIN_TO_PIN_WARNING   4    // pin connected to another pin: warning level
++#define ERCE_PIN_TO_PIN_ERROR     5    // pin connected to another pin: error level
+ #define ERCE_HIERACHICAL_LABEL    6    // mismatch between hierarchical labels and pins sheets
+ #define ERCE_NOCONNECT_CONNECTED  7    // a no connect symbol is connected to more than 1 pin
+ #define ERCE_GLOBLABEL            8    // global label not connected to any other global label
+diff --git a/eeschema/pinedit.cpp b/eeschema/pinedit.cpp
+index 1b44172f..96a9c104 100644
+--- a/eeschema/pinedit.cpp
++++ b/eeschema/pinedit.cpp
+@@ -236,7 +236,7 @@ void LIB_EDIT_FRAME::PlacePin()
+     LIB_PART*      part = GetCurPart();
+-    // Test for an other pin in same new position:
++    // Test for another pin in same new position:
+     for( LIB_PIN* pin = part->GetNextPin();  pin;  pin = part->GetNextPin( pin ) )
+     {
+         if( pin == cur_pin || newpos != pin->GetPosition() || pin->GetFlags() )
+diff --git a/eeschema/sch_base_frame.h b/eeschema/sch_base_frame.h
+index c99e1a60..1ff78e35 100644
+--- a/eeschema/sch_base_frame.h
++++ b/eeschema/sch_base_frame.h
+@@ -169,7 +169,7 @@ protected:
+      * Function OnOpenLibraryViewer
+      * Open the library viewer only to browse library contents.
+      * If the viewed is already opened from this, raise the viewer
+-     * If the viewed is already opened from an other window, close it and reopen
++     * If the viewed is already opened from another window, close it and reopen
+      */
+     void OnOpenLibraryViewer( wxCommandEvent& event );
+diff --git a/eeschema/sch_screen.cpp b/eeschema/sch_screen.cpp
+index c2f82019..b6f052e3 100644
+--- a/eeschema/sch_screen.cpp
++++ b/eeschema/sch_screen.cpp
+@@ -825,7 +825,7 @@ void SCH_SCREEN::SelectBlockItems()
+                 // this selected wire has no ends in block.
+                 // But it was selected (because it intersects the selecting area),
+                 // so we must keep it selected and select items connected to it
+-                // Note: an other option could be: remove it from drag list
++                // Note: another option could be: remove it from drag list
+                 item->SetFlags( SELECTED | SKIP_STRUCT );
+                 std::vector< wxPoint > connections;
+                 item->GetConnectionPoints( connections );
+@@ -1227,7 +1227,7 @@ int SCH_SCREEN::GetConnection( const wxPoint& aPosition, PICKED_ITEMS_LIST& aLis
+             // when tmp != NULL, segment is a new candidate:
+             // put it in deleted list if
+-            // the start point is not connected to an other item (like pin)
++            // the start point is not connected to another item (like pin)
+             if( tmp && !CountConnectedItems( segment->GetStartPoint(), true ) )
+                 noconnect = true;
+@@ -1251,7 +1251,7 @@ int SCH_SCREEN::GetConnection( const wxPoint& aPosition, PICKED_ITEMS_LIST& aLis
+             // when tmp != NULL, segment is a new candidate:
+             // put it in deleted list if
+-            // the end point is not connected to an other item (like pin)
++            // the end point is not connected to another item (like pin)
+             if( tmp && !CountConnectedItems( segment->GetEndPoint(), true ) )
+                 noconnect = true;
+diff --git a/eeschema/schframe.h b/eeschema/schframe.h
+index 0db8ea82..693331a5 100644
+--- a/eeschema/schframe.h
++++ b/eeschema/schframe.h
+@@ -903,7 +903,7 @@ private:
+     /**
+      * Function OnCovertTextType
+-     * is a command event handler to change a text type to an other one.  The new text,
++     * is a command event handler to change a text type to another one.  The new text,
+      * label, hierarchical label, or global label is created from the old text and the
+      * old text is deleted.
+      */
+@@ -913,7 +913,7 @@ private:
+      * Function BeginSegment
+      * creates a new segment ( WIRE, BUS ) or terminates the current segment in progress.
+      *
+-     * If the end of the current segment is on an other segment, place a junction if needed
++     * If the end of the current segment is on another segment, place a junction if needed
+      * and terminates the command.  If the end of the current segment is on a pin, terminate
+      * the command.  In all other cases starts a new segment.
+      */
+diff --git a/eeschema/viewlib_frame.cpp b/eeschema/viewlib_frame.cpp
+index ddcefa97..ed13bfaa 100644
+--- a/eeschema/viewlib_frame.cpp
++++ b/eeschema/viewlib_frame.cpp
+@@ -443,7 +443,7 @@ void LIB_VIEW_FRAME::SetSelectedLibrary( const wxString& aLibraryName )
+     // Ensure the corresponding line in m_libList is selected
+     // (which is not necessary the case if SetSelectedLibrary is called
+-    // by an other caller than ClickOnLibList.
++    // by another caller than ClickOnLibList.
+     m_libList->SetStringSelection( m_libraryName, true );
+ }
+diff --git a/gerbview/gerbview_frame.h b/gerbview/gerbview_frame.h
+index 383ab544..4675b2ba 100644
+--- a/gerbview/gerbview_frame.h
++++ b/gerbview/gerbview_frame.h
+@@ -355,7 +355,7 @@ public:
+     /**
+      * Function GetNegativeItemsColor
+      * @return the color of negative items.
+-     * This is usually the background color, but can be an other color
++     * This is usually the background color, but can be another color
+      * in order to see negative objects
+      */
+     EDA_COLOR_T GetNegativeItemsColor() const;
+diff --git a/include/class_bitmap_base.h b/include/class_bitmap_base.h
+index 53c5b835..9fe28e9f 100644
+--- a/include/class_bitmap_base.h
++++ b/include/class_bitmap_base.h
+@@ -35,7 +35,7 @@ class PLOTTER;
+ /**
+  * This class handle bitmap images in KiCad.
+- * It is not intended to be used alone, but inside an other class,
++ * It is not intended to be used alone, but inside another class,
+  * so all methods are protected ( or private )
+  * It is used in SCH_BITMAP class and WS_DRAW_ITEM_BITMAP (and other in future)
+  *
+diff --git a/include/class_drawpanel.h b/include/class_drawpanel.h
+index 14ad1042..5f71a041 100644
+--- a/include/class_drawpanel.h
++++ b/include/class_drawpanel.h
+@@ -113,7 +113,7 @@ private:
+     END_MOUSE_CAPTURE_CALLBACK m_endMouseCaptureCallback;
+     /// useful to avoid false start block in certain cases
+-    /// (like switch from a sheet to an other sheet
++    /// (like switch from a sheet to another sheet
+     /// >= 0 (or >= n) if a block can start
+     int     m_canStartBlock;
+diff --git a/include/class_undoredo_container.h b/include/class_undoredo_container.h
+index 13c9e85b..f3473dbf 100644
+--- a/include/class_undoredo_container.h
++++ b/include/class_undoredo_container.h
+@@ -89,7 +89,7 @@ private:
+                                         * edited item. */
+     KICAD_T        m_pickedItemType;   /* type of schematic or board item that is concerned */
+-    EDA_ITEM*      m_link;             /* Pointer on an other item. Used in undo redo command
++    EDA_ITEM*      m_link;             /* Pointer on another item. Used in undo redo command
+                                         * used when a duplicate exists i.e. when an item is
+                                         * modified, and the copy of initial item exists (the
+                                         * duplicate) m_Item points the duplicate (i.e the old
+diff --git a/include/dsnlexer.h b/include/dsnlexer.h
+index ded81c75..33bbc43d 100644
+--- a/include/dsnlexer.h
++++ b/include/dsnlexer.h
+@@ -219,7 +219,7 @@ public:
+      * Useable only for DSN lexers which share the same LINE_READER
+      * Synchronizes the pointers handling the data read by the LINE_READER
+      * Allows 2 DNSLEXER to share the same current line, when switching from a
+-     * DNSLEXER to an other DNSLEXER
++     * DNSLEXER to another DNSLEXER
+      * @param aLexer = the model
+      * @return true if the sync can be made ( at least the same line reader )
+      */
+diff --git a/include/gal/opengl/glm/ext.hpp b/include/gal/opengl/glm/ext.hpp
+index 9ef0c927..2068e43f 100644
+--- a/include/gal/opengl/glm/ext.hpp
++++ b/include/gal/opengl/glm/ext.hpp
+@@ -60,7 +60,7 @@
+ #if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_EXT_INCLUDED_DISPLAYED))
+ #     define GLM_MESSAGE_EXT_INCLUDED_DISPLAYED
+-#     pragma message("GLM: All extensions included (not recommanded)")
++#     pragma message("GLM: All extensions included (not recommended)")
+ #endif//GLM_MESSAGES
+ #include "./gtc/constants.hpp"
+diff --git a/include/gal/opengl/glm/gtc/matrix_transform.hpp b/include/gal/opengl/glm/gtc/matrix_transform.hpp
+index 020c6dd9..3fc55c95 100644
+--- a/include/gal/opengl/glm/gtc/matrix_transform.hpp
++++ b/include/gal/opengl/glm/gtc/matrix_transform.hpp
+@@ -62,7 +62,7 @@ namespace glm
+       /// 
+       /// @param m Input matrix multiplied by this translation matrix.
+       /// @param v Coordinates of a translation vector.
+-      /// @tparam T Value type used to build the matrix. Currently supported: half (not recommanded), float or double.
++      /// @tparam T Value type used to build the matrix. Currently supported: half (not recommended), float or double.
+       /// @code
+       /// #include <glm/glm.hpp>
+       /// #include <glm/gtc/matrix_transform.hpp>
+@@ -87,7 +87,7 @@ namespace glm
+       /// 
+       /// @param m Input matrix multiplied by this rotation matrix.
+       /// @param angle Rotation angle expressed in radians if GLM_FORCE_RADIANS is define or degrees otherwise.
+-      /// @param axis Rotation axis, recommanded to be normalized.
++      /// @param axis Rotation axis, recommended to be normalized.
+       /// @tparam T Value type used to build the matrix. Supported: half, float or double.
+       /// @see gtc_matrix_transform
+       /// @see gtx_transform
+@@ -104,7 +104,7 @@ namespace glm
+       /// 
+       /// @param m Input matrix multiplied by this scale matrix.
+       /// @param v Ratio of scaling for each axis.
+-      /// @tparam T Value type used to build the matrix. Currently supported: half (not recommanded), float or double.
++      /// @tparam T Value type used to build the matrix. Currently supported: half (not recommended), float or double.
+       /// @see gtc_matrix_transform
+       /// @see gtx_transform
+       /// @see - scale(T x, T y, T z) scale(T const & x, T const & y, T const & z)
+@@ -123,7 +123,7 @@ namespace glm
+       /// @param top 
+       /// @param zNear 
+       /// @param zFar 
+-      /// @tparam T Value type used to build the matrix. Currently supported: half (not recommanded), float or double.
++      /// @tparam T Value type used to build the matrix. Currently supported: half (not recommended), float or double.
+       /// @see gtc_matrix_transform
+       /// @see - glm::ortho(T const & left, T const & right, T const & bottom, T const & top)
+       template <typename T> 
+@@ -141,7 +141,7 @@ namespace glm
+       /// @param right 
+       /// @param bottom 
+       /// @param top 
+-      /// @tparam T Value type used to build the matrix. Currently supported: half (not recommanded), float or double.
++      /// @tparam T Value type used to build the matrix. Currently supported: half (not recommended), float or double.
+       /// @see gtc_matrix_transform
+     /// @see - glm::ortho(T const & left, T const & right, T const & bottom, T const & top, T const & zNear, T const & zFar)
+       template <typename T> 
+@@ -159,7 +159,7 @@ namespace glm
+       /// @param top 
+       /// @param near 
+       /// @param far 
+-      /// @tparam T Value type used to build the matrix. Currently supported: half (not recommanded), float or double.
++      /// @tparam T Value type used to build the matrix. Currently supported: half (not recommended), float or double.
+       /// @see gtc_matrix_transform
+       template <typename T> 
+       detail::tmat4x4<T> frustum(
+@@ -176,7 +176,7 @@ namespace glm
+       /// @param aspect 
+       /// @param near 
+       /// @param far 
+-      /// @tparam T Value type used to build the matrix. Currently supported: half (not recommanded), float or double.
++      /// @tparam T Value type used to build the matrix. Currently supported: half (not recommended), float or double.
+       /// @see gtc_matrix_transform
+       template <typename T> 
+       detail::tmat4x4<T> perspective(
+@@ -192,7 +192,7 @@ namespace glm
+       /// @param height 
+       /// @param near 
+       /// @param far 
+-      /// @tparam T Value type used to build the matrix. Currently supported: half (not recommanded), float or double.
++      /// @tparam T Value type used to build the matrix. Currently supported: half (not recommended), float or double.
+       /// @see gtc_matrix_transform
+       template <typename valType> 
+       detail::tmat4x4<valType> perspectiveFov(
+@@ -207,7 +207,7 @@ namespace glm
+       /// @param fovy Expressed in radians if GLM_FORCE_RADIANS is define or degrees otherwise.
+       /// @param aspect 
+       /// @param near 
+-      /// @tparam T Value type used to build the matrix. Currently supported: half (not recommanded), float or double.
++      /// @tparam T Value type used to build the matrix. Currently supported: half (not recommended), float or double.
+       /// @see gtc_matrix_transform
+     template <typename T> 
+       detail::tmat4x4<T> infinitePerspective(
+@@ -218,7 +218,7 @@ namespace glm
+       /// @param fovy Expressed in radians if GLM_FORCE_RADIANS is define or degrees otherwise.
+       /// @param aspect 
+       /// @param near 
+-      /// @tparam T Value type used to build the matrix. Currently supported: half (not recommanded), float or double.
++      /// @tparam T Value type used to build the matrix. Currently supported: half (not recommended), float or double.
+       /// @see gtc_matrix_transform
+     template <typename T> 
+       detail::tmat4x4<T> tweakedInfinitePerspective(
+@@ -230,7 +230,7 @@ namespace glm
+       /// @param model 
+       /// @param proj
+       /// @param viewport 
+-      /// @tparam T Native type used for the computation. Currently supported: half (not recommanded), float or double.
++      /// @tparam T Native type used for the computation. Currently supported: half (not recommended), float or double.
+       /// @tparam U Currently supported: Floating-point types and integer types.
+       /// @see gtc_matrix_transform
+       template <typename T, typename U> 
+@@ -246,7 +246,7 @@ namespace glm
+       /// @param model 
+       /// @param proj
+       /// @param viewport 
+-      /// @tparam T Native type used for the computation. Currently supported: half (not recommanded), float or double.
++      /// @tparam T Native type used for the computation. Currently supported: half (not recommended), float or double.
+       /// @tparam U Currently supported: Floating-point types and integer types.
+       /// @see gtc_matrix_transform
+       template <typename T, typename U> 
+@@ -261,7 +261,7 @@ namespace glm
+       /// @param center 
+       /// @param delta 
+       /// @param viewport
+-      /// @tparam T Native type used for the computation. Currently supported: half (not recommanded), float or double.
++      /// @tparam T Native type used for the computation. Currently supported: half (not recommended), float or double.
+       /// @tparam U Currently supported: Floating-point types and integer types.
+       /// @see gtc_matrix_transform
+       template <typename T, typename U> 
+diff --git a/include/gal/opengl/glm/gtc/random.hpp b/include/gal/opengl/glm/gtc/random.hpp
+index 3cda59c7..98d9b564 100644
+--- a/include/gal/opengl/glm/gtc/random.hpp
++++ b/include/gal/opengl/glm/gtc/random.hpp
+@@ -57,7 +57,7 @@ namespace glm
+       /// 
+       /// @param Min 
+       /// @param Max 
+-      /// @tparam genType Value type. Currently supported: half (not recommanded), float or double scalars and vectors.
++      /// @tparam genType Value type. Currently supported: half (not recommended), float or double scalars and vectors.
+       /// @see gtc_random
+       template <typename genType> 
+       genType linearRand(
+diff --git a/pagelayout_editor/pl_editor_frame.h b/pagelayout_editor/pl_editor_frame.h
+index ba3b7aeb..e278d998 100644
+--- a/pagelayout_editor/pl_editor_frame.h
++++ b/pagelayout_editor/pl_editor_frame.h
+@@ -177,7 +177,7 @@ public:
+     /**
+      * Page layout editor can show the title block using a page number
+-     * 1 or an other number.
++     * 1 or another number.
+      * This is because some items can be shown (or not) only on page 1
+      * (a feature  which look like word processing option
+      * "page 1 differs from other pages".
+diff --git a/pcbnew/class_board.cpp b/pcbnew/class_board.cpp
+index a9090500..fb64b067 100644
+--- a/pcbnew/class_board.cpp
++++ b/pcbnew/class_board.cpp
+@@ -203,7 +203,7 @@ void BOARD::chainMarkedSegments( wxPoint aPosition, const LSET& aLayerMask, TRAC
+      * end or not.  They will be analyzer later and vias on terminal points
+      * of the track will be considered as part of this track if they do not
+      * connect segments of another track together and will be considered as
+-     * part of an other track when removing the via, the segments of that other
++     * part of another track when removing the via, the segments of that other
+      * track are disconnected.
+      */
+     for( ; ; )
+diff --git a/pcbnew/connect.cpp b/pcbnew/connect.cpp
+index 848c30b5..12bb6a67 100644
+--- a/pcbnew/connect.cpp
++++ b/pcbnew/connect.cpp
+@@ -570,7 +570,7 @@ int CONNECTIONS::Merge_SubNets( int aOldSubNet, int aNewSubNet )
+  * segments connected together.
+  * The track list must be sorted by nets, and all segments
+  * from m_firstTrack to m_lastTrack have the same net
+- * When 2 items are connected (a track to a pad, or a track to an other track),
++ * When 2 items are connected (a track to a pad, or a track to another track),
+  * they are grouped in a cluster.
+  * The .m_Subnet member is the cluster identifier (subnet id)
+  * For a given net, if all tracks are created, there is only one cluster.
+@@ -655,7 +655,7 @@ void CONNECTIONS::Propagate_SubNets()
+                 }
+                 else
+                 {
+-                    // it is connected to an other segment not in a cluster, so we must
++                    // it is connected to another segment not in a cluster, so we must
+                     // create a new cluster (only with the 2 track segments)
+                     sub_netcode++;
+                     curr_track->SetSubNet( sub_netcode );
+diff --git a/pcbnew/connect.h b/pcbnew/connect.h
+index 46868c87..89cb4dc5 100644
+--- a/pcbnew/connect.h
++++ b/pcbnew/connect.h
+@@ -213,7 +213,7 @@ public:
+      * segments connected together.
+      * The track list must be sorted by nets, and all segments
+      * from m_firstTrack to m_lastTrack have the same net.
+-     * When 2 items are connected (a track to a pad, or a track to an other track),
++     * When 2 items are connected (a track to a pad, or a track to another track),
+      * they are grouped in a cluster.
+      * For pads, this is the .m_physical_connexion member which is a cluster identifier
+      * For tracks, this is the .m_Subnet member which is a cluster identifier
+diff --git a/pcbnew/dialogs/dialog_copper_zones_base.cpp b/pcbnew/dialogs/dialog_copper_zones_base.cpp
+index a264412d..9eb9571e 100644
+--- a/pcbnew/dialogs/dialog_copper_zones_base.cpp
++++ b/pcbnew/dialogs/dialog_copper_zones_base.cpp
+@@ -191,7 +191,7 @@ DIALOG_COPPER_ZONE_BASE::DIALOG_COPPER_ZONE_BASE( wxWindow* parent, wxWindowID i
+       
+       m_staticText171 = new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, _("Priority level:"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_staticText171->Wrap( -1 );
+-      m_staticText171->SetToolTip( _("On each copper layer, zones are filled by priority order.\nSo when a zone is inside an other zone:\n* If its priority is highter: its outlines are removed from the other layer.\n* If its priority is equal: a DRC error is set.") );
++      m_staticText171->SetToolTip( _("On each copper layer, zones are filled by priority order.\nSo when a zone is inside another zone:\n* If its priority is highter: its outlines are removed from the other layer.\n* If its priority is equal: a DRC error is set.") );
+       
+       m_MiddleBox->Add( m_staticText171, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
+       
+diff --git a/pcbnew/dialogs/dialog_copper_zones_base.fbp b/pcbnew/dialogs/dialog_copper_zones_base.fbp
+index 2dd9d40c..9209f4d6 100644
+--- a/pcbnew/dialogs/dialog_copper_zones_base.fbp
++++ b/pcbnew/dialogs/dialog_copper_zones_base.fbp
+@@ -2428,7 +2428,7 @@
+                                         <property name="style"></property>
+                                         <property name="subclass"></property>
+                                         <property name="toolbar_pane">0</property>
+-                                        <property name="tooltip">On each copper layer, zones are filled by priority order.&#x0A;So when a zone is inside an other zone:&#x0A;* If its priority is highter: its outlines are removed from the other layer.&#x0A;* If its priority is equal: a DRC error is set.</property>
++                                        <property name="tooltip">On each copper layer, zones are filled by priority order.&#x0A;So when a zone is inside another zone:&#x0A;* If its priority is highter: its outlines are removed from the other layer.&#x0A;* If its priority is equal: a DRC error is set.</property>
+                                         <property name="window_extra_style"></property>
+                                         <property name="window_name"></property>
+                                         <property name="window_style"></property>
+diff --git a/pcbnew/dialogs/dialog_design_rules.cpp b/pcbnew/dialogs/dialog_design_rules.cpp
+index 80fe0f8c..6b762628 100644
+--- a/pcbnew/dialogs/dialog_design_rules.cpp
++++ b/pcbnew/dialogs/dialog_design_rules.cpp
+@@ -511,7 +511,7 @@ void DIALOG_DESIGN_RULES::CopyRulesListToBoard()
+         if( !m_BrdSettings->m_NetClasses.Add( nc ) )
+         {
+-            // this netclass cannot be added because an other netclass with the same name exists
++            // this netclass cannot be added because another netclass with the same name exists
+             // Should not occur because OnAddNetclassClick() tests for existing NetClass names
+             wxString msg;
+             msg.Printf( wxT( "CopyRulesListToBoard(): The NetClass \"%s\" already exists. Skip" ),
+diff --git a/pcbnew/dialogs/dialog_export_vrml.cpp b/pcbnew/dialogs/dialog_export_vrml.cpp
+index c2165b94..b3af7ccd 100644
+--- a/pcbnew/dialogs/dialog_export_vrml.cpp
++++ b/pcbnew/dialogs/dialog_export_vrml.cpp
+@@ -184,7 +184,7 @@ void PCB_EDIT_FRAME::OnExportVRML( wxCommandEvent& event )
+     static wxString last_vrmlName;  // the last wrml file name built
+     // If the board name has changed since the last export,
+-    // do not use the old path, initialized by an other board
++    // do not use the old path, initialized by another board
+     if( last_brdName.IsEmpty() || last_brdName != GetBoard()->GetFileName() )
+     {
+         last_brdName = GetBoard()->GetFileName();
+diff --git a/pcbnew/dialogs/dialog_freeroute_exchange_help.html b/pcbnew/dialogs/dialog_freeroute_exchange_help.html
+index 375df66c..61eb6ff7 100644
+--- a/pcbnew/dialogs/dialog_freeroute_exchange_help.html
++++ b/pcbnew/dialogs/dialog_freeroute_exchange_help.html
+@@ -40,7 +40,7 @@
+ <li> in freerouter: load the project's *.dsn file. Immediately after a load, all
+      components and traces (if any) will initially be 'fixed'. This is a 'lock
+      in place' toggle that you can undo by selecting a region with your mouse
+-     and then selecting 'Unfix' from the menu. Occassionally you may want to
++     and then selecting 'Unfix' from the menu. Occasionally you may want to
+      re-fix a trace or a part, if only temporarily. This keeps it locked in
+      place.
+ </li><br>
+diff --git a/pcbnew/dialogs/dialog_gendrill_base.cpp b/pcbnew/dialogs/dialog_gendrill_base.cpp
+index e868e1f9..92451b9c 100644
+--- a/pcbnew/dialogs/dialog_gendrill_base.cpp
++++ b/pcbnew/dialogs/dialog_gendrill_base.cpp
+@@ -83,17 +83,17 @@ DIALOG_GENDRILL_BASE::DIALOG_GENDRILL_BASE( wxWindow* parent, wxWindowID id, con
+       sbOptSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Drill File Options:") ), wxVERTICAL );
+       
+       m_Check_Mirror = new wxCheckBox( sbOptSizer->GetStaticBox(), wxID_ANY, _("Mirror y axis"), wxDefaultPosition, wxDefaultSize, 0 );
+-      m_Check_Mirror->SetToolTip( _("Not recommanded.\nUsed mostly by users who make themselves the boards.") );
++      m_Check_Mirror->SetToolTip( _("Not recommended.\nUsed mostly by users who make themselves the boards.") );
+       
+       sbOptSizer->Add( m_Check_Mirror, 0, wxRIGHT|wxLEFT, 5 );
+       
+       m_Check_Minimal = new wxCheckBox( sbOptSizer->GetStaticBox(), wxID_ANY, _("Minimal header"), wxDefaultPosition, wxDefaultSize, 0 );
+-      m_Check_Minimal->SetToolTip( _("Not recommanded.\nUse it only for board houses which do not accept fully featured headers.") );
++      m_Check_Minimal->SetToolTip( _("Not recommended.\nUse it only for board houses which do not accept fully featured headers.") );
+       
+       sbOptSizer->Add( m_Check_Minimal, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
+       
+       m_Check_Merge_PTH_NPTH = new wxCheckBox( sbOptSizer->GetStaticBox(), wxID_ANY, _("Merge PTH and NPTH holes into one file"), wxDefaultPosition, wxDefaultSize, 0 );
+-      m_Check_Merge_PTH_NPTH->SetToolTip( _("Not recommanded.\nUse it only for board houses which ask for merged PTH and NPTH into onlu one file") );
++      m_Check_Merge_PTH_NPTH->SetToolTip( _("Not recommended.\nUse it only for board houses which ask for merged PTH and NPTH into onlu one file") );
+       
+       sbOptSizer->Add( m_Check_Merge_PTH_NPTH, 0, wxALL, 5 );
+       
+diff --git a/pcbnew/dialogs/dialog_gendrill_base.fbp b/pcbnew/dialogs/dialog_gendrill_base.fbp
+index 73fef325..8ccb9e9a 100644
+--- a/pcbnew/dialogs/dialog_gendrill_base.fbp
++++ b/pcbnew/dialogs/dialog_gendrill_base.fbp
+@@ -759,7 +759,7 @@
+                                                 <property name="style"></property>
+                                                 <property name="subclass"></property>
+                                                 <property name="toolbar_pane">0</property>
+-                                                <property name="tooltip">Not recommanded.&#x0A;Used mostly by users who make themselves the boards.</property>
++                                                <property name="tooltip">Not recommended.&#x0A;Used mostly by users who make themselves the boards.</property>
+                                                 <property name="validator_data_type"></property>
+                                                 <property name="validator_style">wxFILTER_NONE</property>
+                                                 <property name="validator_type">wxDefaultValidator</property>
+@@ -847,7 +847,7 @@
+                                                 <property name="style"></property>
+                                                 <property name="subclass"></property>
+                                                 <property name="toolbar_pane">0</property>
+-                                                <property name="tooltip">Not recommanded.&#x0A;Use it only for board houses which do not accept fully featured headers.</property>
++                                                <property name="tooltip">Not recommended.&#x0A;Use it only for board houses which do not accept fully featured headers.</property>
+                                                 <property name="validator_data_type"></property>
+                                                 <property name="validator_style">wxFILTER_NONE</property>
+                                                 <property name="validator_type">wxDefaultValidator</property>
+@@ -935,7 +935,7 @@
+                                                 <property name="style"></property>
+                                                 <property name="subclass"></property>
+                                                 <property name="toolbar_pane">0</property>
+-                                                <property name="tooltip">Not recommanded.&#x0A;Use it only for board houses which ask for merged PTH and NPTH into onlu one file</property>
++                                                <property name="tooltip">Not recommended.&#x0A;Use it only for board houses which ask for merged PTH and NPTH into onlu one file</property>
+                                                 <property name="validator_data_type"></property>
+                                                 <property name="validator_style">wxFILTER_NONE</property>
+                                                 <property name="validator_type">wxDefaultValidator</property>
+diff --git a/pcbnew/dialogs/dialog_keepout_area_properties_base.cpp b/pcbnew/dialogs/dialog_keepout_area_properties_base.cpp
+index 0665261b..6a83094e 100644
+--- a/pcbnew/dialogs/dialog_keepout_area_properties_base.cpp
++++ b/pcbnew/dialogs/dialog_keepout_area_properties_base.cpp
+@@ -52,7 +52,7 @@ DIALOG_KEEPOUT_AREA_PROPERTIES_BASE::DIALOG_KEEPOUT_AREA_PROPERTIES_BASE( wxWind
+       
+       wxString m_OutlineAppearanceCtrlChoices[] = { _("Line"), _("Hatched Outline"), _("Full Hatched") };
+       int m_OutlineAppearanceCtrlNChoices = sizeof( m_OutlineAppearanceCtrlChoices ) / sizeof( wxString );
+-      m_OutlineAppearanceCtrl = new wxRadioBox( this, wxID_ANY, _("Outline Appearence:"), wxDefaultPosition, wxDefaultSize, m_OutlineAppearanceCtrlNChoices, m_OutlineAppearanceCtrlChoices, 1, wxRA_SPECIFY_COLS );
++      m_OutlineAppearanceCtrl = new wxRadioBox( this, wxID_ANY, _("Outline Appearance:"), wxDefaultPosition, wxDefaultSize, m_OutlineAppearanceCtrlNChoices, m_OutlineAppearanceCtrlChoices, 1, wxRA_SPECIFY_COLS );
+       m_OutlineAppearanceCtrl->SetSelection( 1 );
+       bSizerRight->Add( m_OutlineAppearanceCtrl, 0, wxALL|wxEXPAND, 5 );
+       
+diff --git a/pcbnew/dialogs/dialog_keepout_area_properties_base.fbp b/pcbnew/dialogs/dialog_keepout_area_properties_base.fbp
+index 926ae8b8..5fc7b1ca 100644
+--- a/pcbnew/dialogs/dialog_keepout_area_properties_base.fbp
++++ b/pcbnew/dialogs/dialog_keepout_area_properties_base.fbp
+@@ -516,7 +516,7 @@
+                                         <property name="gripper">0</property>
+                                         <property name="hidden">0</property>
+                                         <property name="id">wxID_ANY</property>
+-                                        <property name="label">Outline Appearence:</property>
++                                        <property name="label">Outline Appearance:</property>
+                                         <property name="majorDimension">1</property>
+                                         <property name="max_size"></property>
+                                         <property name="maximize_button">0</property>
+diff --git a/pcbnew/dialogs/dialog_non_copper_zones_properties_base.cpp b/pcbnew/dialogs/dialog_non_copper_zones_properties_base.cpp
+index c41ffc28..6d32e86f 100644
+--- a/pcbnew/dialogs/dialog_non_copper_zones_properties_base.cpp
++++ b/pcbnew/dialogs/dialog_non_copper_zones_properties_base.cpp
+@@ -51,7 +51,7 @@ DIALOG_NONCOPPER_ZONES_PROPERTIES_BASE::DIALOG_NONCOPPER_ZONES_PROPERTIES_BASE(
+       
+       wxString m_OutlineAppearanceCtrlChoices[] = { _("Line"), _("Hatched Outline"), _("Full Hatched") };
+       int m_OutlineAppearanceCtrlNChoices = sizeof( m_OutlineAppearanceCtrlChoices ) / sizeof( wxString );
+-      m_OutlineAppearanceCtrl = new wxRadioBox( this, wxID_ANY, _("Outlines Appearence"), wxDefaultPosition, wxDefaultSize, m_OutlineAppearanceCtrlNChoices, m_OutlineAppearanceCtrlChoices, 1, wxRA_SPECIFY_COLS );
++      m_OutlineAppearanceCtrl = new wxRadioBox( this, wxID_ANY, _("Outlines Appearance"), wxDefaultPosition, wxDefaultSize, m_OutlineAppearanceCtrlNChoices, m_OutlineAppearanceCtrlChoices, 1, wxRA_SPECIFY_COLS );
+       m_OutlineAppearanceCtrl->SetSelection( 1 );
+       m_OutilinesBoxOpt->Add( m_OutlineAppearanceCtrl, 0, wxALL|wxEXPAND, 5 );
+       
+diff --git a/pcbnew/dialogs/dialog_non_copper_zones_properties_base.fbp b/pcbnew/dialogs/dialog_non_copper_zones_properties_base.fbp
+index 20f62960..58ae33ab 100644
+--- a/pcbnew/dialogs/dialog_non_copper_zones_properties_base.fbp
++++ b/pcbnew/dialogs/dialog_non_copper_zones_properties_base.fbp
+@@ -445,7 +445,7 @@
+                                                 <property name="gripper">0</property>
+                                                 <property name="hidden">0</property>
+                                                 <property name="id">wxID_ANY</property>
+-                                                <property name="label">Outlines Appearence</property>
++                                                <property name="label">Outlines Appearance</property>
+                                                 <property name="majorDimension">1</property>
+                                                 <property name="max_size"></property>
+                                                 <property name="maximize_button">0</property>
+diff --git a/pcbnew/dialogs/wizard_3DShape_Libs_downloader.cpp b/pcbnew/dialogs/wizard_3DShape_Libs_downloader.cpp
+index 08e61ffc..6506552a 100644
+--- a/pcbnew/dialogs/wizard_3DShape_Libs_downloader.cpp
++++ b/pcbnew/dialogs/wizard_3DShape_Libs_downloader.cpp
+@@ -107,7 +107,7 @@ WIZARD_3DSHAPE_LIBS_DOWNLOADER::WIZARD_3DSHAPE_LIBS_DOWNLOADER( wxWindow* aParen
+     // and not fully visible.
+     // Forcing deselection does not work, at least on W7 with wxWidgets 3.0.2
+     // So (and also because m_textCtrlGithubURL and m_downloadDir are rarely modified
+-    // the focus is given to an other widget.
++    // the focus is given to another widget.
+     m_hyperlinkGithubKicad->SetFocus();
+     Connect( wxEVT_RADIOBUTTON, wxCommandEventHandler( WIZARD_3DSHAPE_LIBS_DOWNLOADER::OnSourceCheck ), NULL, this );
+diff --git a/pcbnew/drc_clearance_test_functions.cpp b/pcbnew/drc_clearance_test_functions.cpp
+index 39d1b9d0..4c440354 100644
+--- a/pcbnew/drc_clearance_test_functions.cpp
++++ b/pcbnew/drc_clearance_test_functions.cpp
+@@ -278,7 +278,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads )
+         {
+             D_PAD* pad = m_pcb->GetPad( ii );
+-            /* No problem if pads are on an other layer,
++            /* No problem if pads are on another layer,
+              * But if a drill hole exists     (a pad on a single layer can have a hole!)
+              * we must test the hole
+              */
+@@ -409,7 +409,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads )
+         /*    We have changed axis:
+          *  the reference segment is Horizontal.
+-         *  3 cases : the segment to test can be parallel, perpendicular or have an other direction
++         *  3 cases : the segment to test can be parallel, perpendicular or have another direction
+          */
+         if( segStartPoint.y == segEndPoint.y ) // parallel segments
+         {
+diff --git a/pcbnew/onrightclick.cpp b/pcbnew/onrightclick.cpp
+index 68c83a36..f673df90 100644
+--- a/pcbnew/onrightclick.cpp
++++ b/pcbnew/onrightclick.cpp
+@@ -635,7 +635,7 @@ void PCB_EDIT_FRAME::createPopupMenuForTracks( TRACK* Track, wxMenu* PopMenu )
+         }
+     }
+-    // Allows switching to an other track/via size when routing
++    // Allows switching to another track/via size when routing
+     AddMenuItem( PopMenu, Append_Track_Width_List( GetBoard() ), ID_POPUP_PCB_SELECT_WIDTH,
+                  _( "Select Track Width" ), KiBitmap( width_track_xpm ) );
+diff --git a/pcbnew/plot_board_layers.cpp b/pcbnew/plot_board_layers.cpp
+index 6ccbdd57..ce2f20e1 100644
+--- a/pcbnew/plot_board_layers.cpp
++++ b/pcbnew/plot_board_layers.cpp
+@@ -957,7 +957,7 @@ PLOTTER* StartPlotBoard( BOARD *aBoard, PCB_PLOT_PARAMS *aPlotOpts,
+         HPGL_plotter = new HPGL_PLOTTER();
+         /* HPGL options are a little more convoluted to compute, so
+-           they're split in an other function */
++           they're split in another function */
+         ConfigureHPGLPenSizes( HPGL_plotter, aPlotOpts );
+         plotter = HPGL_plotter;
+         break;
+diff --git a/pcbnew/ratsnest.cpp b/pcbnew/ratsnest.cpp
+index b3880859..ee00c222 100644
+--- a/pcbnew/ratsnest.cpp
++++ b/pcbnew/ratsnest.cpp
+@@ -342,7 +342,7 @@ static int tst_links_between_blocks( NETINFO_ITEM*          aNetinfo,
+     int            subratsnest_id, min_id;
+     RATSNEST_ITEM* link, * best_link;
+-    // Search a link from a block to an other block
++    // Search a link from a block to another block
+     best_link = NULL;
+     for( unsigned ii = aNetinfo->m_RatsnestStartIdx; ii < aNetinfo->m_RatsnestEndIdx; ii++ )
+@@ -456,7 +456,7 @@ static void tst_links_between_pads( int &      aCurrSubRatsnestId,
+  * - First:
+  *   Initialise for each pad the subratsnest id to its subnet value
+  *   explore the full ratnest (relative to the net) and active a link each time at least one pad of
+- *   the given link is not connected to an other pad by a track ( subratsnest = 0)
++ *   the given link is not connected to another pad by a track ( subratsnest = 0)
+  *   If the 2 pads linked have both the subratsnest id = 0, a new subratsnest value is created
+  * -  Second:
+  *   explore the full ratnest (relative to the net) and find a link that links
+diff --git a/pcbnew/zones_by_polygon.cpp b/pcbnew/zones_by_polygon.cpp
+index 31db133a..4e833a08 100644
+--- a/pcbnew/zones_by_polygon.cpp
++++ b/pcbnew/zones_by_polygon.cpp
+@@ -129,7 +129,7 @@ void PCB_EDIT_FRAME::duplicateZone( wxDC* aDC, ZONE_CONTAINER* aZone )
+     {
+         DisplayError( this,
+             _( "The duplicated zone is on the same layer as the initial zone, which has no sense.\n"
+-               "Please, choose an other layer for the new zone") );
++               "Please, choose another layer for the new zone") );
+         success = false;
+     }
+@@ -684,7 +684,7 @@ int PCB_EDIT_FRAME::Begin_Zone( wxDC* DC )
+             // PCB_EDIT_FRAME::SetCurItem() calls DisplayInfo().
+             GetScreen()->SetCurItem( NULL );
+             DisplayError( this,
+-                          _( "DRC error: this start point is inside or too close an other area" ) );
++                          _( "DRC error: this start point is inside or too close another area" ) );
+             return 0;
+         }
+@@ -743,7 +743,7 @@ bool PCB_EDIT_FRAME::End_Zone( wxDC* DC )
+         if( g_Drc_On && m_drc->Drc( zone, icorner ) == BAD_DRC )      // we can't validate the closing edge
+         {
+             DisplayError( this,
+-                          _( "DRC error: closing this area creates a DRC error with an other area" ) );
++                          _( "DRC error: closing this area creates a DRC error with another area" ) );
+             m_canvas->MoveCursorToCrossHair();
+             return false;
+         }
+diff --git a/pcbnew/zones_functions_for_undo_redo.cpp b/pcbnew/zones_functions_for_undo_redo.cpp
+index 65e761f0..46eeb953 100644
+--- a/pcbnew/zones_functions_for_undo_redo.cpp
++++ b/pcbnew/zones_functions_for_undo_redo.cpp
+@@ -184,7 +184,7 @@ int SaveCopyOfZones( PICKED_ITEMS_LIST& aPickList, BOARD* aPcb, int aNetCode, LA
+  *          its status becomes UR_DELETED
+  *          the aAuxiliaryList corresponding picker is removed (if not found : set an error)
+  *  >> if the picked zone was flagged as UR_NEW, and was after deleted ,
+- *  perhaps combined with an other zone  (i.e. not found in board list):
++ *  perhaps combined with another zone  (i.e. not found in board list):
+  *          the picker is removed
+  *          the zone itself if really deleted
+  *          the aAuxiliaryList corresponding picker is removed (if not found : set an error)
+@@ -262,7 +262,7 @@ void UpdateCopyOfZonesList( PICKED_ITEMS_LIST& aPickList,
+                 {
+                     DBG( printf(
+                         "UpdateCopyOfZonesList(): item not found in aAuxiliaryList,"
+-                        "combined with an other zone\n" ) );
++                        "combined with another zone\n" ) );
+                 }
+                 break;
+             }
+diff --git a/pcbnew/zones_test_and_combine_areas.cpp b/pcbnew/zones_test_and_combine_areas.cpp
+index 97937562..667e72a8 100644
+--- a/pcbnew/zones_test_and_combine_areas.cpp
++++ b/pcbnew/zones_test_and_combine_areas.cpp
+@@ -253,7 +253,7 @@ bool BOARD::TestAreaIntersection( ZONE_CONTAINER* area_ref, ZONE_CONTAINER* area
+         }
+     }
+-    // If a contour is inside an other contour, no segments intersects, but the zones
++    // If a contour is inside another contour, no segments intersects, but the zones
+     // can be combined if a corner is inside an outline (only one corner is enought)
+     for( int ic2 = 0; ic2 < poly2->GetCornersCount(); ic2++ )
+     {
diff --git a/patches/fixes/KiCadDocumentation.cmake-fix-install-target-for-HTML-docu.patch b/patches/fixes/KiCadDocumentation.cmake-fix-install-target-for-HTML-docu.patch
new file mode 100644 (file)
index 0000000..2c00b90
--- /dev/null
@@ -0,0 +1,49 @@
+From: Carsten Schoenert <c.schoenert@t-online.de>
+Date: Sun, 25 Sep 2016 09:56:25 +0200
+Subject: KiCadDocumentation.cmake: fix install target for HTML docu
+
+The old default behaviour while installing the generated HTML content is
+to install the whole images/$LANG folders into every generated language.
+This was producing a lot of useless duplicated data.  After applying a
+commit from upstream [1] this problem was partially fixed, but the
+default images were not installed.
+
+This commit fixes changing the kind of creating the list for the default
+images that will be installed in a next step. Also the images from the
+English language is needed as some howtos use them.
+
+[1] https://github.com/KiCad/kicad-doc/commit/027c096941105048da8921ac2d8bc4d1594b14a9
+---
+ doc/CMakeModules/KiCadDocumentation.cmake | 16 +++++++++++-----
+ 1 file changed, 11 insertions(+), 5 deletions(-)
+
+diff --git a/doc/CMakeModules/KiCadDocumentation.cmake b/doc/CMakeModules/KiCadDocumentation.cmake
+index 884f46bf..8c80b030 100644
+--- a/doc/CMakeModules/KiCadDocumentation.cmake
++++ b/doc/CMakeModules/KiCadDocumentation.cmake
+@@ -136,14 +136,20 @@ macro( KiCadDocumentation DOCNAME )
+             add_dependencies( ${DOCNAME} ${DOCNAME}_html_${LANGUAGE} )
+             install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${LANGUAGE}/${DOCNAME}.html DESTINATION ${KICAD_DOC_PATH}/${LANGUAGE} COMPONENT html-${LANGUAGE} )
++            # install the images/en/ folder if not already done, the folder contains the default images
++            if( NOT "${KICAD_DOC_PATH}/${LANGUAGE}/images/en" EQUAL "-1" )
++                install( DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${LANGUAGE}/images/en DESTINATION ${KICAD_DOC_PATH}/${LANGUAGE}/images COMPONENT html-${LANGUAGE} OPTIONAL PATTERN "*.png")
++            endif()
+-            # It seems to be nescesary to use diffrent install commands to
+-            # install the images properly without having other lagunages
+-            # polluting the images folder
++            # collectings the default *.png files from the source tree and install them
++            file( GLOB COMMONPNGFILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/images" "${CMAKE_CURRENT_SOURCE_DIR}/images/*.png" )
++            foreach( PNGFILE ${COMMONPNGFILES} )
++                # install the common used images into the root images folder
++                install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${LANGUAGE}/images/${PNGFILE} DESTINATION ${KICAD_DOC_PATH}/${LANGUAGE}/images COMPONENT html-${LANGUAGE} )
++            endforeach()
++            # install the specific images from the desired language
+             install( DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${LANGUAGE}/images/${LANGUAGE} DESTINATION ${KICAD_DOC_PATH}/${LANGUAGE}/images COMPONENT html-${LANGUAGE} OPTIONAL PATTERN "*.png")
+             install( DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${LANGUAGE}/images/icons DESTINATION ${KICAD_DOC_PATH}/${LANGUAGE}/images COMPONENT html-${LANGUAGE} OPTIONAL PATTERN "*.png")
+-            file(GLOB UNIVERSAL_IMAGES "${CMAKE_CURRENT_BINARY_DIR}/${LANGUAGE}/images/*.png")
+-            install( FILES ${UNIVERSAL_IMAGES} DESTINATION ${KICAD_DOC_PATH}/${LANGUAGE}/images COMPONENT html-${LANGUAGE} )
+         endif()
diff --git a/patches/fixes/Modifing-the-Exec-cmd-in-the-desktop-files.patch b/patches/fixes/Modifing-the-Exec-cmd-in-the-desktop-files.patch
new file mode 100644 (file)
index 0000000..eb70801
--- /dev/null
@@ -0,0 +1,107 @@
+From: Georges Khaznadar <georgesk@debian.org>
+Date: Sat, 3 Sep 2016 17:57:10 +0200
+Subject: Modifing the Exec cmd in the desktop-files
+
+Fixup the *.desktop files and add a file handler to the Exec key.
+https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html
+---
+ resources/linux/mime/applications/bitmap2component.desktop | 3 ++-
+ resources/linux/mime/applications/cvpcb.desktop            | 2 +-
+ resources/linux/mime/applications/eeschema.desktop         | 1 +
+ resources/linux/mime/applications/gerbview.desktop         | 3 ++-
+ resources/linux/mime/applications/kicad.desktop            | 1 +
+ resources/linux/mime/applications/pcbcalculator.desktop    | 3 ++-
+ resources/linux/mime/applications/pcbnew.desktop           | 1 +
+ 7 files changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/resources/linux/mime/applications/bitmap2component.desktop b/resources/linux/mime/applications/bitmap2component.desktop
+index f2ff0240..07a71ad7 100644
+--- a/resources/linux/mime/applications/bitmap2component.desktop
++++ b/resources/linux/mime/applications/bitmap2component.desktop
+@@ -1,7 +1,8 @@
+ [Desktop Entry]
+ Categories=Development;Electronics;
+ Comment=Create a component from a bitmap for use with KiCad
+-Exec=bitmap2component
++Exec=bitmap2component %f
++Keywords=Bitmap;Converter;
+ GenericName=EDA Suite
+ Icon=bitmap2component
+ MimeType=application/x-bitmap2component-project;
+diff --git a/resources/linux/mime/applications/cvpcb.desktop b/resources/linux/mime/applications/cvpcb.desktop
+index 4610839e..eadbc64d 100644
+--- a/resources/linux/mime/applications/cvpcb.desktop
++++ b/resources/linux/mime/applications/cvpcb.desktop
+@@ -1,7 +1,7 @@
+ [Desktop Entry]
+ Categories=Development;Electronics;
+ Comment=Assign footprints to symbols (part of KiCad)
+-Exec=cvpcb
++Exec=cvpcb %f
+ GenericName=EDA Suite
+ Icon=cvpcb
+ MimeType=application/x-cvpcb-project;
+diff --git a/resources/linux/mime/applications/eeschema.desktop b/resources/linux/mime/applications/eeschema.desktop
+index 41b1ba32..3ed46951 100644
+--- a/resources/linux/mime/applications/eeschema.desktop
++++ b/resources/linux/mime/applications/eeschema.desktop
+@@ -3,6 +3,7 @@ Categories=Development;Electronics;
+ Comment=Design an electronic schematic
+ Comment[fr]=Dessiner des schémas Ã©lectroniques
+ Exec=eeschema %f
++Keywords=Schematic;Editor;
+ GenericName=Electronic schematic design
+ GenericName[fr]=Saisie de schéma Ã©lectronique
+ Icon=eeschema
+diff --git a/resources/linux/mime/applications/gerbview.desktop b/resources/linux/mime/applications/gerbview.desktop
+index 42e3a836..5f983161 100644
+--- a/resources/linux/mime/applications/gerbview.desktop
++++ b/resources/linux/mime/applications/gerbview.desktop
+@@ -1,7 +1,8 @@
+ [Desktop Entry]
+ Categories=Development;Electronics;
+ Comment=View gerber files
+-Exec=gerbview
++Exec=gerbview %f
++Keywords=PCB;Viewer;
+ GenericName=EDA Suite
+ Icon=gerbview
+ MimeType=application/x-gerbview-project;
+diff --git a/resources/linux/mime/applications/kicad.desktop b/resources/linux/mime/applications/kicad.desktop
+index e9df0f0a..d2dc06af 100644
+--- a/resources/linux/mime/applications/kicad.desktop
++++ b/resources/linux/mime/applications/kicad.desktop
+@@ -3,6 +3,7 @@ Categories=Development;Electronics;
+ Comment=Design a printed circuit board
+ Comment[fr]=Concevoir un circuit imprimé
+ Exec=kicad %f
++Keywords=Kicad;Projectmanager;
+ GenericName=EDA Suite
+ GenericName[fr]=Suite logicielle de conception Ã©lectronique
+ Icon=kicad
+diff --git a/resources/linux/mime/applications/pcbcalculator.desktop b/resources/linux/mime/applications/pcbcalculator.desktop
+index ce37e646..31312609 100644
+--- a/resources/linux/mime/applications/pcbcalculator.desktop
++++ b/resources/linux/mime/applications/pcbcalculator.desktop
+@@ -1,7 +1,8 @@
+ [Desktop Entry]
+ Categories=Development;Electronics;
+ Comment=Calculator for various electronics related computations
+-Exec=pcb_calculator
++Exec=pcb_calculator %f
++Keywords=PCB;Caculator;
+ GenericName=EDA Suite
+ Icon=pcbcalculator
+ MimeType=application/x-pcbcalculator-project;
+diff --git a/resources/linux/mime/applications/pcbnew.desktop b/resources/linux/mime/applications/pcbnew.desktop
+index 120231ed..ba7bed1a 100644
+--- a/resources/linux/mime/applications/pcbnew.desktop
++++ b/resources/linux/mime/applications/pcbnew.desktop
+@@ -2,6 +2,7 @@
+ Categories=Development;Electronics;
+ Comment=Layout a printed circuit board
+ Exec=pcbnew %f
++Keywords=PCB;Circuit;Layout;Design;Editor;Footprint;
+ GenericName=EDA Suite
+ Icon=pcbnew
+ MimeType=application/x-pcbnew-pcb;
diff --git a/patches/fixes/Remove-unused-FindOpenSSL.cmake.patch b/patches/fixes/Remove-unused-FindOpenSSL.cmake.patch
new file mode 100644 (file)
index 0000000..eb382c2
--- /dev/null
@@ -0,0 +1,357 @@
+From: Simon Richter <Simon.Richter@hogyros.de>
+Date: Thu, 5 May 2016 10:31:26 +0200
+Subject: Remove unused FindOpenSSL.cmake
+
+---
+ CMakeModules/FindOpenSSL.cmake | 342 -----------------------------------------
+ 1 file changed, 342 deletions(-)
+ delete mode 100644 CMakeModules/FindOpenSSL.cmake
+
+diff --git a/CMakeModules/FindOpenSSL.cmake b/CMakeModules/FindOpenSSL.cmake
+deleted file mode 100644
+index de91787c..00000000
+--- a/CMakeModules/FindOpenSSL.cmake
++++ /dev/null
+@@ -1,342 +0,0 @@
+-#.rst:
+-# FindOpenSSL
+-# -----------
+-#
+-# Try to find the OpenSSL encryption library
+-#
+-# Once done this will define
+-#
+-# ::
+-#
+-#   OPENSSL_ROOT_DIR - Set this variable to the root installation of OpenSSL
+-#
+-#
+-#
+-# Read-Only variables:
+-#
+-# ::
+-#
+-#   OPENSSL_FOUND - system has the OpenSSL library
+-#   OPENSSL_INCLUDE_DIR - the OpenSSL include directory
+-#   OPENSSL_LIBRARIES - The libraries needed to use OpenSSL
+-#   OPENSSL_VERSION - This is set to $major.$minor.$revision$path (eg. 0.9.8s)
+-
+-#=============================================================================
+-# Copyright 2006-2009 Kitware, Inc.
+-# Copyright 2006 Alexander Neundorf <neundorf@kde.org>
+-# Copyright 2009-2011 Mathieu Malaterre <mathieu.malaterre@gmail.com>
+-#
+-# Distributed under the OSI-approved BSD License (the "License");
+-# see accompanying file Copyright.txt for details.
+-#
+-# This software is distributed WITHOUT ANY WARRANTY; without even the
+-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+-# See the License for more information.
+-#=============================================================================
+-# (To distribute this file outside of CMake, substitute the full
+-#  License text for the above reference.)
+-
+-if (UNIX)
+-  find_package(PkgConfig QUIET)
+-  pkg_check_modules(_OPENSSL QUIET openssl)
+-endif ()
+-
+-if (WIN32)
+-  # http://www.slproweb.com/products/Win32OpenSSL.html
+-  set(_OPENSSL_ROOT_HINTS
+-    ${OPENSSL_ROOT_DIR}
+-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]"
+-    "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;Inno Setup: App Path]"
+-    ENV OPENSSL_ROOT_DIR
+-    )
+-  file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles)
+-  set(_OPENSSL_ROOT_PATHS
+-    "${_programfiles}/OpenSSL"
+-    "${_programfiles}/OpenSSL-Win32"
+-    "${_programfiles}/OpenSSL-Win64"
+-    "C:/OpenSSL/"
+-    "C:/OpenSSL-Win32/"
+-    "C:/OpenSSL-Win64/"
+-    )
+-  unset(_programfiles)
+-else ()
+-  set(_OPENSSL_ROOT_HINTS
+-    ${OPENSSL_ROOT_DIR}
+-    ENV OPENSSL_ROOT_DIR
+-    )
+-endif ()
+-
+-set(_OPENSSL_ROOT_HINTS_AND_PATHS
+-    HINTS ${_OPENSSL_ROOT_HINTS}
+-    PATHS ${_OPENSSL_ROOT_PATHS}
+-    )
+-
+-find_path(OPENSSL_INCLUDE_DIR
+-  NAMES
+-    openssl/ssl.h
+-    ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+-  HINTS
+-    ${_OPENSSL_INCLUDEDIR}
+-  PATH_SUFFIXES
+-    include
+-)
+-
+-if(WIN32 AND NOT CYGWIN)
+-  if(MSVC)
+-    # /MD and /MDd are the standard values - if someone wants to use
+-    # others, the libnames have to change here too
+-    # use also ssl and ssleay32 in debug as fallback for openssl < 0.9.8b
+-    # TODO: handle /MT and static lib
+-    # In Visual C++ naming convention each of these four kinds of Windows libraries has it's standard suffix:
+-    #   * MD for dynamic-release
+-    #   * MDd for dynamic-debug
+-    #   * MT for static-release
+-    #   * MTd for static-debug
+-
+-    # Implementation details:
+-    # We are using the libraries located in the VC subdir instead of the parent directory eventhough :
+-    # libeay32MD.lib is identical to ../libeay32.lib, and
+-    # ssleay32MD.lib is identical to ../ssleay32.lib
+-    find_library(LIB_EAY_DEBUG
+-      NAMES
+-        libeay32MDd
+-        libeay32d
+-        ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+-      PATH_SUFFIXES
+-        "lib"
+-        "VC"
+-        "lib/VC"
+-    )
+-
+-    find_library(LIB_EAY_RELEASE
+-      NAMES
+-        libeay32MD
+-        libeay32
+-        ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+-      PATH_SUFFIXES
+-        "lib"
+-        "VC"
+-        "lib/VC"
+-    )
+-
+-    find_library(SSL_EAY_DEBUG
+-      NAMES
+-        ssleay32MDd
+-        ssleay32d
+-        ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+-      PATH_SUFFIXES
+-        "lib"
+-        "VC"
+-        "lib/VC"
+-    )
+-
+-    find_library(SSL_EAY_RELEASE
+-      NAMES
+-        ssleay32MD
+-        ssleay32
+-        ssl
+-        ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+-      PATH_SUFFIXES
+-        "lib"
+-        "VC"
+-        "lib/VC"
+-    )
+-
+-    set(LIB_EAY_LIBRARY_DEBUG "${LIB_EAY_DEBUG}")
+-    set(LIB_EAY_LIBRARY_RELEASE "${LIB_EAY_RELEASE}")
+-    set(SSL_EAY_LIBRARY_DEBUG "${SSL_EAY_DEBUG}")
+-    set(SSL_EAY_LIBRARY_RELEASE "${SSL_EAY_RELEASE}")
+-
+-    include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+-    select_library_configurations(LIB_EAY)
+-    select_library_configurations(SSL_EAY)
+-
+-    mark_as_advanced(LIB_EAY_LIBRARY_DEBUG LIB_EAY_LIBRARY_RELEASE
+-                     SSL_EAY_LIBRARY_DEBUG SSL_EAY_LIBRARY_RELEASE)
+-    set( OPENSSL_LIBRARIES ${SSL_EAY_LIBRARY} ${LIB_EAY_LIBRARY} )
+-  elseif(MINGW)
+-    message( STATUS "Searching for OpenSSL in MinGW." )
+-    # same player, for MinGW
+-    set(LIB_EAY_NAMES libeay32)
+-    set(SSL_EAY_NAMES ssleay32)
+-    list(APPEND LIB_EAY_NAMES crypto)
+-    list(APPEND SSL_EAY_NAMES ssl)
+-
+-    find_library(LIB_EAY
+-      NAMES
+-        ${LIB_EAY_NAMES}
+-      ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+-      PATH_SUFFIXES
+-        "lib"
+-        "lib/MinGW"
+-      # Do not search system path.  Otherwise the DLL will be found rather than the link library.
+-      NO_SYSTEM_ENVIRONMENT_PATH
+-      NO_CMAKE_SYSTEM_PATH
+-    )
+-
+-    find_library(SSL_EAY
+-      NAMES
+-        ${SSL_EAY_NAMES}
+-      ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+-      PATH_SUFFIXES
+-        "lib"
+-        "lib/MinGW"
+-      # Do not search system path.  Otherwise the DLL will be found rather than the link library.
+-      NO_SYSTEM_ENVIRONMENT_PATH
+-      NO_CMAKE_SYSTEM_PATH
+-    )
+-
+-    mark_as_advanced(SSL_EAY LIB_EAY)
+-    set( OPENSSL_LIBRARIES ${SSL_EAY} ${LIB_EAY} )
+-    unset(LIB_EAY_NAMES)
+-    unset(SSL_EAY_NAMES)
+-  else()
+-    # Not sure what to pick for -say- intel, let's use the toplevel ones and hope someone report issues:
+-    find_library(LIB_EAY
+-      NAMES
+-        libeay32
+-      ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+-      HINTS
+-        ${_OPENSSL_LIBDIR}
+-      PATH_SUFFIXES
+-        lib
+-    )
+-
+-    find_library(SSL_EAY
+-      NAMES
+-        ssleay32
+-      ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+-      HINTS
+-        ${_OPENSSL_LIBDIR}
+-      PATH_SUFFIXES
+-        lib
+-    )
+-
+-    mark_as_advanced(SSL_EAY LIB_EAY)
+-    set( OPENSSL_LIBRARIES ${SSL_EAY} ${LIB_EAY} )
+-  endif()
+-else()
+-
+-  find_library(OPENSSL_SSL_LIBRARY
+-    NAMES
+-      ssl
+-      ssleay32
+-      ssleay32MD
+-    ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+-    HINTS
+-      ${_OPENSSL_LIBDIR}
+-    PATH_SUFFIXES
+-      lib
+-  )
+-
+-  find_library(OPENSSL_CRYPTO_LIBRARY
+-    NAMES
+-      crypto
+-    ${_OPENSSL_ROOT_HINTS_AND_PATHS}
+-    HINTS
+-      ${_OPENSSL_LIBDIR}
+-    PATH_SUFFIXES
+-      lib
+-  )
+-
+-  mark_as_advanced(OPENSSL_CRYPTO_LIBRARY OPENSSL_SSL_LIBRARY)
+-
+-  # compat defines
+-  set(OPENSSL_SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY})
+-  set(OPENSSL_CRYPTO_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY})
+-
+-  set(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY})
+-
+-endif()
+-
+-function(from_hex HEX DEC)
+-  string(TOUPPER "${HEX}" HEX)
+-  set(_res 0)
+-  string(LENGTH "${HEX}" _strlen)
+-
+-  while (_strlen GREATER 0)
+-    math(EXPR _res "${_res} * 16")
+-    string(SUBSTRING "${HEX}" 0 1 NIBBLE)
+-    string(SUBSTRING "${HEX}" 1 -1 HEX)
+-    if (NIBBLE STREQUAL "A")
+-      math(EXPR _res "${_res} + 10")
+-    elseif (NIBBLE STREQUAL "B")
+-      math(EXPR _res "${_res} + 11")
+-    elseif (NIBBLE STREQUAL "C")
+-      math(EXPR _res "${_res} + 12")
+-    elseif (NIBBLE STREQUAL "D")
+-      math(EXPR _res "${_res} + 13")
+-    elseif (NIBBLE STREQUAL "E")
+-      math(EXPR _res "${_res} + 14")
+-    elseif (NIBBLE STREQUAL "F")
+-      math(EXPR _res "${_res} + 15")
+-    else()
+-      math(EXPR _res "${_res} + ${NIBBLE}")
+-    endif()
+-
+-    string(LENGTH "${HEX}" _strlen)
+-  endwhile()
+-
+-  set(${DEC} ${_res} PARENT_SCOPE)
+-endfunction()
+-
+-if (OPENSSL_INCLUDE_DIR)
+-  if (_OPENSSL_VERSION)
+-    set(OPENSSL_VERSION "${_OPENSSL_VERSION}")
+-  elseif(OPENSSL_INCLUDE_DIR AND EXISTS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h")
+-    file(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" openssl_version_str
+-         REGEX "^#[\t ]*define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])+.*")
+-
+-    # The version number is encoded as 0xMNNFFPPS: major minor fix patch status
+-    # The status gives if this is a developer or prerelease and is ignored here.
+-    # Major, minor, and fix directly translate into the version numbers shown in
+-    # the string. The patch field translates to the single character suffix that
+-    # indicates the bug fix state, which 00 -> nothing, 01 -> a, 02 -> b and so
+-    # on.
+-
+-    message(STATUS "OPENSSL_VERSION_STR=${openssl_version_str}")
+-
+-    string(REGEX REPLACE "^.*OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F]).*$"
+-           "\\1;\\2;\\3;\\4;\\5" OPENSSL_VERSION_LIST "${openssl_version_str}")
+-    list(GET OPENSSL_VERSION_LIST 0 OPENSSL_VERSION_MAJOR)
+-    list(GET OPENSSL_VERSION_LIST 1 OPENSSL_VERSION_MINOR)
+-    from_hex("${OPENSSL_VERSION_MINOR}" OPENSSL_VERSION_MINOR)
+-    list(GET OPENSSL_VERSION_LIST 2 OPENSSL_VERSION_FIX)
+-    from_hex("${OPENSSL_VERSION_FIX}" OPENSSL_VERSION_FIX)
+-    list(GET OPENSSL_VERSION_LIST 3 OPENSSL_VERSION_PATCH)
+-
+-    if (NOT OPENSSL_VERSION_PATCH STREQUAL "00")
+-      from_hex("${OPENSSL_VERSION_PATCH}" _tmp)
+-      # 96 is the ASCII code of 'a' minus 1
+-      math(EXPR OPENSSL_VERSION_PATCH_ASCII "${_tmp} + 96")
+-      unset(_tmp)
+-      # Once anyone knows how OpenSSL would call the patch versions beyond 'z'
+-      # this should be updated to handle that, too. This has not happened yet
+-      # so it is simply ignored here for now.
+-      string(ASCII "${OPENSSL_VERSION_PATCH_ASCII}" OPENSSL_VERSION_PATCH_STRING)
+-    endif ()
+-
+-    set(OPENSSL_VERSION "${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_MINOR}.${OPENSSL_VERSION_FIX}${OPENSSL_VERSION_PATCH_STRING}")
+-  endif ()
+-endif ()
+-
+-include(FindPackageHandleStandardArgs)
+-
+-if (OPENSSL_VERSION)
+-  find_package_handle_standard_args(OpenSSL
+-    REQUIRED_VARS
+-      OPENSSL_LIBRARIES
+-      OPENSSL_INCLUDE_DIR
+-    VERSION_VAR
+-      OPENSSL_VERSION
+-    FAIL_MESSAGE
+-      "Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR"
+-  )
+-else ()
+-  find_package_handle_standard_args(OpenSSL "Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR"
+-    OPENSSL_LIBRARIES
+-    OPENSSL_INCLUDE_DIR
+-  )
+-endif ()
+-
+-mark_as_advanced(OPENSSL_INCLUDE_DIR OPENSSL_LIBRARIES)
diff --git a/patches/fixes/Replace-avhttp-with-libcurl.patch b/patches/fixes/Replace-avhttp-with-libcurl.patch
new file mode 100644 (file)
index 0000000..54b932c
--- /dev/null
@@ -0,0 +1,295 @@
+From: unknown <mark.roszko@gmail.com>
+Date: Tue, 22 Dec 2015 15:19:00 +0100
+Subject: Replace avhttp with libcurl
+
+Some fixes:
+1. Fixed an assumption somebody originally made in the plugin that
+   std::string had contiguous storage. This is not specced behavior pre
+   C++11 so we gamble by calling .reserve() which should give a far
+   better guarantee.
+
+2. Added copy to clipboard information for curl
+
+3. Removed some openssl references in compiling.md
+
+4. Renamed struct vars to be uppercase to match "public var" code style
+   policy
+---
+ Documentation/development/compiling.md | 12 +-----------
+ common/basicframe.cpp                  |  3 +++
+ common/kicad_curl/kicad_curl.cpp       | 26 ++++++++++++++++++++++++++
+ common/kicad_curl/kicad_curl_easy.cpp  | 26 +++++++++++++-------------
+ include/kicad_curl/kicad_curl.h        |  7 +++++++
+ include/kicad_curl/kicad_curl_easy.h   |  6 +++---
+ pcbnew/github/CMakeLists.txt           |  2 --
+ pcbnew/github/github_getliblist.cpp    |  5 +++--
+ pcbnew/github/github_plugin.cpp        |  3 ++-
+ 9 files changed, 58 insertions(+), 32 deletions(-)
+
+diff --git a/Documentation/development/compiling.md b/Documentation/development/compiling.md
+index 90cea955..6a5ac92c 100644
+--- a/Documentation/development/compiling.md
++++ b/Documentation/development/compiling.md
+@@ -78,14 +78,6 @@ specific patches required to build a working Boost library.  These patches can b
+ [patches folder][] in the KiCad source.  These patches are named by the platform name they should
+ be applied against.
+-## OpenSSL Secure Socket Layer Library ## {#openssl}
+-
+-The [OpenSSL][] library is only required when the KiCad build is configured with the Github plugin
+-enabled.  See the [KiCad Build Configuration Options](#build_opts)` section for more information.
+-Please note that KiCad will download and build version 1.0.1e of OpenSSL by default.  You should
+-probably use the version of OpenSSL installed on your system as it will most likely be more up to
+-date and contain the latest security fixes.
+-
+ ## GLEW OpenGL Extension Wrangler Library ## {#glew}
+ The [OpenGL Extension Wrangler][GLEW] is an OpenGL helper library used by the KiCad graphics
+@@ -299,7 +291,7 @@ the following commands:
+               mingw-w64-x86_64-boost \
+               mingw-w64-x86_64-cairo \
+               mingw-w64-x86_64-glew \
+-              mingw-w64-x86_64-openssl \
++              mingw-w64-x86_64-curl \
+               mingw-w64-x86_64-wxPython \
+               mingw-w64-x86_64-wxWidgets
+     cd kicad-source
+@@ -311,7 +303,6 @@ the following commands:
+           -DCMAKE_PREFIX_PATH=/mingw64 \
+           -DCMAKE_INSTALL_PREFIX=/mingw64 \
+           -DDEFAULT_INSTALL_PATH=/mingw64 \
+-          -DOPENSSL_ROOT_DIR=/mingw64 \
+           -DKICAD_SKIP_BOOST=ON \
+           -DKICAD_SCRIPTING=ON \
+           -DKICAD_SCRIPTING_MODULES=ON \
+@@ -408,7 +399,6 @@ Boost patches in the KiCad source [patch folder][].
+ [wxWidgets]: http://wxwidgets.org/
+ [patches folder]: http://bazaar.launchpad.net/~kicad-product-committers/kicad/product/files/head:/patches/
+ [Boost]: http://www.boost.org/
+-[OpenSSL]: https://www.openssl.org/
+ [GLEW]: http://glew.sourceforge.net/
+ [GLUT]: https://www.opengl.org/resources/libraries/glut/
+ [Cairo]: http://cairographics.org/
+diff --git a/common/basicframe.cpp b/common/basicframe.cpp
+index 46ddd550..815247d0 100644
+--- a/common/basicframe.cpp
++++ b/common/basicframe.cpp
+@@ -28,6 +28,7 @@
+  * @brief EDA_BASE_FRAME class implementation.
+  */
++#include <kicad_curl/kicad_curl.h> /* Include before any wx file */
+ #include <wx/aboutdlg.h>
+ #include <wx/fontdlg.h>
+ #include <wx/clipbrd.h>
+@@ -580,6 +581,8 @@ void EDA_BASE_FRAME::CopyVersionInfoToClipboard( wxCommandEvent&  event )
+                 << ( BOOST_VERSION / 100 % 1000 ) << wxT( "." )
+                 << ( BOOST_VERSION % 100 ) << wxT( "\n" );
++    msg_version <<  KICAD_CURL::GetSimpleVersion() << wxT( "\n" );
++
+     msg_version << wxT( "         USE_WX_GRAPHICS_CONTEXT=" );
+ #ifdef USE_WX_GRAPHICS_CONTEXT
+     msg_version << wxT( "ON\n" );
+diff --git a/common/kicad_curl/kicad_curl.cpp b/common/kicad_curl/kicad_curl.cpp
+index 7424eec8..0df25288 100644
+--- a/common/kicad_curl/kicad_curl.cpp
++++ b/common/kicad_curl/kicad_curl.cpp
+@@ -51,4 +51,30 @@ std::string KICAD_CURL::GetVersion()
+ }
++std::string KICAD_CURL::GetSimpleVersion()
++{
++    curl_version_info_data *info = curl_version_info(CURLVERSION_NOW);
++
++    std::string res;
++
++    if( info->version )
++    {
++        res += "libcurl version: " + std::string(info->version);
++    }
++
++    res += " (";
++    if( info->features & CURL_VERSION_SSL )
++    {
++        res += "with SSL - ";
++        res += std::string(info->ssl_version);
++    }
++    else
++    {
++        res += "without SSL";
++    }
++    res += ")";
++
++    return res;
++}
++
+ bool KICAD_CURL::m_initialized = false;
+\ No newline at end of file
+diff --git a/common/kicad_curl/kicad_curl_easy.cpp b/common/kicad_curl/kicad_curl_easy.cpp
+index 71a410d0..4dadf043 100644
+--- a/common/kicad_curl/kicad_curl_easy.cpp
++++ b/common/kicad_curl/kicad_curl_easy.cpp
+@@ -43,8 +43,8 @@ KICAD_CURL_EASY::KICAD_CURL_EASY()
+         THROW_IO_ERROR( "Unable to initialize CURL session" );
+     }
+-    m_Buffer.payload = (char*)malloc( 1 );
+-    m_Buffer.size = 0;
++    m_Buffer.Payload = (char*)malloc( 1 );
++    m_Buffer.Size = 0;
+     curl_easy_setopt( m_CURL, CURLOPT_WRITEFUNCTION, write_callback );
+     curl_easy_setopt( m_CURL, CURLOPT_WRITEDATA, (void *)&m_Buffer );
+@@ -53,7 +53,7 @@ KICAD_CURL_EASY::KICAD_CURL_EASY()
+ KICAD_CURL_EASY::~KICAD_CURL_EASY()
+ {
+-    free(m_Buffer.payload);
++    free(m_Buffer.Payload);
+     curl_easy_cleanup(m_CURL);
+ }
+@@ -110,27 +110,27 @@ static size_t write_callback( void *contents, size_t size, size_t nmemb, void *u
+     struct KICAD_EASY_CURL_BUFFER *p = ( struct KICAD_EASY_CURL_BUFFER * ) userp;
+     /* expand buffer */
+-    p->payload = (char *) realloc( p->payload, p->size + realsize + 1 );
++    p->Payload = (char *) realloc( p->Payload, p->Size + realsize + 1 );
+     /* check buffer */
+-    if ( p->payload == NULL )
++    if ( p->Payload == NULL )
+     {
+         wxLogError( wxT( "Failed to expand buffer in curl_callback" ) );
+         /* free buffer */
+-        free( p->payload );
++        free( p->Payload );
+         return -1;
+     }
+     /* copy contents to buffer */
+-    memcpy( &(p->payload[p->size]), contents, realsize );
++    memcpy( &(p->Payload[p->Size]), contents, realsize );
+     /* set new buffer size */
+-    p->size += realsize;
++    p->Size += realsize;
+     /* ensure null termination */
+-    p->payload[p->size] = 0;
++    p->Payload[p->Size] = 0;
+     /* return size */
+     return realsize;
+@@ -144,11 +144,11 @@ void KICAD_CURL_EASY::Perform()
+         curl_easy_setopt( m_CURL, CURLOPT_HTTPHEADER, m_headers );
+     }
+-    if( m_Buffer.size > 0 )
++    if( m_Buffer.Size > 0 )
+     {
+-        free( m_Buffer.payload );
+-        m_Buffer.payload = (char*)malloc( 1 );
+-        m_Buffer.size = 0;
++        free( m_Buffer.Payload );
++        m_Buffer.Payload = (char*)malloc( 1 );
++        m_Buffer.Size = 0;
+     }
+     CURLcode res = curl_easy_perform( m_CURL );
+diff --git a/include/kicad_curl/kicad_curl.h b/include/kicad_curl/kicad_curl.h
+index 3639400c..ef49f92d 100644
+--- a/include/kicad_curl/kicad_curl.h
++++ b/include/kicad_curl/kicad_curl.h
+@@ -75,6 +75,13 @@ public:
+      */
+     static std::string GetVersion();
++    /**
++     * Function GetSimpleVersion
++     * Reports back curl version only and SSL library support
++     *
++     * @return std::string - Generated version string
++     */
++    static std::string GetSimpleVersion();
+ private:
+     static bool m_initialized;
+ };
+diff --git a/include/kicad_curl/kicad_curl_easy.h b/include/kicad_curl/kicad_curl_easy.h
+index a87c3d02..2273e489 100644
+--- a/include/kicad_curl/kicad_curl_easy.h
++++ b/include/kicad_curl/kicad_curl_easy.h
+@@ -52,8 +52,8 @@
+  */
+ struct KICAD_EASY_CURL_BUFFER
+ {
+-    char* payload;
+-    size_t size;
++    char* Payload;
++    size_t Size;
+ };
+@@ -142,7 +142,7 @@ public:
+      * @param aArg is the argument being passed to CURL, ensure it is the right type per manual
+      * @return CURLcode - CURL error code, will return CURLE_OK unless a problem was encountered
+      */
+-    template <typename T> CURLcode SetOption( CURLoption aOption, T aArg ) 
++    template <typename T> CURLcode SetOption( CURLoption aOption, T aArg )
+     { 
+         return curl_easy_setopt( m_CURL, aOption, aArg ); 
+     }
+diff --git a/pcbnew/github/CMakeLists.txt b/pcbnew/github/CMakeLists.txt
+index bb37ebf5..c6615e48 100644
+--- a/pcbnew/github/CMakeLists.txt
++++ b/pcbnew/github/CMakeLists.txt
+@@ -32,8 +32,6 @@ set( GITHUB_PLUGIN_SRCS
+ add_library( github_plugin STATIC ${GITHUB_PLUGIN_SRCS} )
+-# No, you don't get github without boost and openssl. Boost_LIBRARIES now moved up
+-# into CMakeLists.txt for pcbnew and cvpcb:
+ target_link_libraries( github_plugin
+     common
+     )
+diff --git a/pcbnew/github/github_getliblist.cpp b/pcbnew/github/github_getliblist.cpp
+index baf5f7c2..6c8f8852 100644
+--- a/pcbnew/github/github_getliblist.cpp
++++ b/pcbnew/github/github_getliblist.cpp
+@@ -212,7 +212,7 @@ bool GITHUB_GETLIBLIST::repoURL2listURL( const wxString& aRepoURL,
+ bool GITHUB_GETLIBLIST::remoteGetJSON( const std::string& aFullURLCommand, wxString* aMsgError )
+ {
+     KICAD_CURL_EASY kcurl;
+-    
++
+     wxLogDebug( wxT( "Attempting to download: " ) + aFullURLCommand );
+     kcurl.SetURL(aFullURLCommand);
+@@ -223,7 +223,8 @@ bool GITHUB_GETLIBLIST::remoteGetJSON( const std::string& aFullURLCommand, wxStr
+     try
+     {
+         kcurl.Perform();
+-        m_image.assign(kcurl.GetBuffer()->payload, kcurl.GetBuffer()->size);
++        m_image.reserve( kcurl.GetBuffer()->Size );
++        m_image.assign( kcurl.GetBuffer()->Payload, kcurl.GetBuffer()->Size );
+         return true;
+     }
+     catch( const IO_ERROR& ioe )
+diff --git a/pcbnew/github/github_plugin.cpp b/pcbnew/github/github_plugin.cpp
+index db96ae18..321e0b76 100644
+--- a/pcbnew/github/github_plugin.cpp
++++ b/pcbnew/github/github_plugin.cpp
+@@ -538,7 +538,8 @@ void GITHUB_PLUGIN::remoteGetZip( const wxString& aRepoURL ) throw( IO_ERROR )
+     try
+     {
+         kcurl.Perform();
+-        m_zip_image.assign(kcurl.GetBuffer()->payload, kcurl.GetBuffer()->size);
++        m_zip_image.reserve( kcurl.GetBuffer()->Size );
++        m_zip_image.assign( kcurl.GetBuffer()->Payload, kcurl.GetBuffer()->Size );
+     }
+     catch( const IO_ERROR& ioe )
+     {
diff --git a/patches/fixes/Replace-the-avhttp-library-used-by-the-github-plugin-with.patch b/patches/fixes/Replace-the-avhttp-library-used-by-the-github-plugin-with.patch
new file mode 100644 (file)
index 0000000..84bdd59
--- /dev/null
@@ -0,0 +1,1061 @@
+From: Mark Roszko <mark.roszko@gmail.com>
+Date: Mon, 21 Dec 2015 15:30:33 -0500
+Subject: Replace the avhttp library used by the github plugin with libcurl.
+
+---
+ CMakeLists.txt                        |   5 +
+ common/CMakeLists.txt                 |   6 +-
+ common/kicad_curl/kicad_curl.cpp      |  54 +++++++++++
+ common/kicad_curl/kicad_curl_easy.cpp | 163 +++++++++++++++++++++++++++++++++
+ common/pgm_base.cpp                   |   9 ++
+ include/kicad_curl/kicad_curl.h       |  82 +++++++++++++++++
+ include/kicad_curl/kicad_curl_easy.h  | 166 ++++++++++++++++++++++++++++++++++
+ pcbnew/github/CMakeLists.txt          |  39 +-------
+ pcbnew/github/github_getliblist.cpp   |  68 +++++++-------
+ pcbnew/github/github_getliblist.h     |   4 +-
+ pcbnew/github/github_plugin.cpp       | 151 ++++++-------------------------
+ pcbnew/github/github_plugin.h         |   6 +-
+ 12 files changed, 560 insertions(+), 193 deletions(-)
+ create mode 100644 common/kicad_curl/kicad_curl.cpp
+ create mode 100644 common/kicad_curl/kicad_curl_easy.cpp
+ create mode 100644 include/kicad_curl/kicad_curl.h
+ create mode 100644 include/kicad_curl/kicad_curl_easy.h
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 6eea373a..858ea58a 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -569,6 +569,11 @@ if( NOT GLEW_FOUND )
+     check_find_package_result( GLEW_FOUND "GLEW" )
+ endif()
++#####################
++# Find CURL library #
++#####################
++find_package( CURL REQUIRED )
++
+ ######################
+ # Find Cairo library #
+ ######################
+diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt
+index c9fbd29b..c2bd2cb2 100644
+--- a/common/CMakeLists.txt
++++ b/common/CMakeLists.txt
+@@ -4,6 +4,7 @@ include_directories(
+     ./dialog_about
+     ${CAIRO_INCLUDE_DIR}
+     ${GLEW_INCLUDE_DIR}
++    ${CURL_INCLUDE_DIRS}
+     ../3d-viewer
+     ../pcbnew
+     ../polygon
+@@ -257,6 +258,9 @@ endif()
+ set( COMMON_SRCS
+     ${COMMON_SRCS}
++    kicad_curl/kicad_curl.cpp
++    kicad_curl/kicad_curl_easy.cpp
++
+     view/view.cpp
+     view/view_item.cpp
+     view/view_group.cpp
+@@ -282,7 +286,7 @@ set( COMMON_SRCS
+ add_library( common STATIC ${COMMON_SRCS} )
+ add_dependencies( common lib-dependencies )
+ add_dependencies( common version_header )
+-target_link_libraries( common ${Boost_LIBRARIES} )
++target_link_libraries( common ${Boost_LIBRARIES} ${CURL_LIBRARIES} )
+ set( PCB_COMMON_SRCS
+diff --git a/common/kicad_curl/kicad_curl.cpp b/common/kicad_curl/kicad_curl.cpp
+new file mode 100644
+index 00000000..7424eec8
+--- /dev/null
++++ b/common/kicad_curl/kicad_curl.cpp
+@@ -0,0 +1,54 @@
++/*
++ * This program source code file is part of KiCad, a free EDA CAD application.
++ *
++ * Copyright (C) 2015 Mark Roszko <mark.roszko@gmail.com>
++ * Copyright (C) 2015 KiCad Developers, see CHANGELOG.TXT for contributors.
++ *
++ * 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 the Free Software Foundation; either version 3
++ * of the License, or (at your option) any later version.
++ *
++ * 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.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, you may find one here:
++ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
++ * or you may search the http://www.gnu.org website for the version 2 license,
++ * or you may write to the Free Software Foundation, Inc.,
++ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
++ */
++
++#include <kicad_curl/kicad_curl.h>
++
++bool KICAD_CURL::Init()
++{
++    if ( curl_global_init( CURL_GLOBAL_ALL ) != CURLE_OK )
++    {
++        return false;
++    }
++    else
++    {
++        m_initialized = true;
++        return true;
++    }
++}
++
++
++void KICAD_CURL::Cleanup()
++{
++    if( m_initialized )
++        curl_global_cleanup();
++}
++
++
++std::string KICAD_CURL::GetVersion()
++{
++    return std::string( curl_version() );
++}
++
++
++bool KICAD_CURL::m_initialized = false;
+\ No newline at end of file
+diff --git a/common/kicad_curl/kicad_curl_easy.cpp b/common/kicad_curl/kicad_curl_easy.cpp
+new file mode 100644
+index 00000000..71a410d0
+--- /dev/null
++++ b/common/kicad_curl/kicad_curl_easy.cpp
+@@ -0,0 +1,163 @@
++/*
++ * This program source code file is part of KiCad, a free EDA CAD application.
++ *
++ * Copyright (C) 2015 Mark Roszko <mark.roszko@gmail.com>
++ * Copyright (C) 2015 KiCad Developers, see CHANGELOG.TXT for contributors.
++ *
++ * 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 the Free Software Foundation; either version 3
++ * of the License, or (at your option) any later version.
++ *
++ * 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.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, you may find one here:
++ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
++ * or you may search the http://www.gnu.org website for the version 2 license,
++ * or you may write to the Free Software Foundation, Inc.,
++ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
++ */
++
++#include <kicad_curl/kicad_curl_easy.h>
++
++#include <cstddef>
++#include <exception>
++#include <stdarg.h>
++#include <sstream>
++#include <richio.h>
++
++static size_t write_callback (void *contents, size_t size, size_t nmemb, void *userp);
++
++
++KICAD_CURL_EASY::KICAD_CURL_EASY()
++    : m_headers( NULL )
++{
++    m_CURL = curl_easy_init();
++
++    if( m_CURL == NULL )
++    {
++        THROW_IO_ERROR( "Unable to initialize CURL session" );
++    }
++
++    m_Buffer.payload = (char*)malloc( 1 );
++    m_Buffer.size = 0;
++
++    curl_easy_setopt( m_CURL, CURLOPT_WRITEFUNCTION, write_callback );
++    curl_easy_setopt( m_CURL, CURLOPT_WRITEDATA, (void *)&m_Buffer );
++}
++
++
++KICAD_CURL_EASY::~KICAD_CURL_EASY()
++{
++    free(m_Buffer.payload);
++    curl_easy_cleanup(m_CURL);
++}
++
++
++bool KICAD_CURL_EASY::SetURL( const std::string& aURL )
++{
++    if( SetOption<const char *>( CURLOPT_URL, aURL.c_str() ) == CURLE_OK )
++    {
++        return true;
++    }
++    return false;
++}
++
++
++bool KICAD_CURL_EASY::SetUserAgent( const std::string& aAgent )
++{
++    if( SetOption<const char *>( CURLOPT_USERAGENT, aAgent.c_str() ) == CURLE_OK )
++    {
++        return true;
++    }
++    return false;
++}
++
++
++bool KICAD_CURL_EASY::SetFollowRedirects( bool aFollow )
++{
++    if( SetOption<long>( CURLOPT_FOLLOWLOCATION , (aFollow ? 1 : 0) ) == CURLE_OK )
++    {
++        return true;
++    }
++    return false;
++}
++
++
++void KICAD_CURL_EASY::SetHeader( const std::string& aName, const std::string& aValue )
++{
++    std::string header = aName + ':' + aValue;
++    m_headers = curl_slist_append( m_headers, header.c_str() );
++}
++
++
++std::string KICAD_CURL_EASY::GetErrorText(CURLcode code)
++{
++    return curl_easy_strerror(code);
++}
++
++
++static size_t write_callback( void *contents, size_t size, size_t nmemb, void *userp )
++{
++    /* calculate buffer size */
++    size_t realsize = size * nmemb;
++
++    /* cast pointer to fetch struct */
++    struct KICAD_EASY_CURL_BUFFER *p = ( struct KICAD_EASY_CURL_BUFFER * ) userp;
++
++    /* expand buffer */
++    p->payload = (char *) realloc( p->payload, p->size + realsize + 1 );
++
++    /* check buffer */
++    if ( p->payload == NULL )
++    {
++        wxLogError( wxT( "Failed to expand buffer in curl_callback" ) );
++
++        /* free buffer */
++        free( p->payload );
++
++        return -1;
++    }
++
++    /* copy contents to buffer */
++    memcpy( &(p->payload[p->size]), contents, realsize );
++
++    /* set new buffer size */
++    p->size += realsize;
++
++    /* ensure null termination */
++    p->payload[p->size] = 0;
++
++    /* return size */
++    return realsize;
++}
++
++
++void KICAD_CURL_EASY::Perform()
++{
++    if( m_headers != NULL )
++    {
++        curl_easy_setopt( m_CURL, CURLOPT_HTTPHEADER, m_headers );
++    }
++
++    if( m_Buffer.size > 0 )
++    {
++        free( m_Buffer.payload );
++        m_Buffer.payload = (char*)malloc( 1 );
++        m_Buffer.size = 0;
++    }
++
++    CURLcode res = curl_easy_perform( m_CURL );
++    if( res != CURLE_OK )
++    {
++        wxString msg = wxString::Format(
++            _( "CURL Request Failed: %s" ),
++            GetErrorText( res ) );
++
++        THROW_IO_ERROR( msg );
++    }
++}
+\ No newline at end of file
+diff --git a/common/pgm_base.cpp b/common/pgm_base.cpp
+index e4894380..0fde3d66 100644
+--- a/common/pgm_base.cpp
++++ b/common/pgm_base.cpp
+@@ -30,6 +30,7 @@
+  *        (locale handling)
+  */
++#include <kicad_curl/kicad_curl.h> /* Include before any wx file */
+ #include <fctsys.h>
+ #include <wx/html/htmlwin.h>
+ #include <wx/fs_zip.h>
+@@ -282,6 +283,7 @@ PGM_BASE::PGM_BASE()
+ PGM_BASE::~PGM_BASE()
+ {
+     destroy();
++    KICAD_CURL::Cleanup();
+ }
+@@ -510,6 +512,13 @@ bool PGM_BASE::initPgm()
+     wxSystemOptions::SetOption( wxOSX_FILEDIALOG_ALWAYS_SHOW_TYPES, 1 );
+ #endif
++    // Initialize CURL
++    wxLogDebug( wxT( "Using %s" ), KICAD_CURL::GetVersion() );
++    if( !KICAD_CURL::Init() )
++    {
++        wxLogDebug( wxT( "Error initializing libcurl" ) );
++    }
++
+     return true;
+ }
+diff --git a/include/kicad_curl/kicad_curl.h b/include/kicad_curl/kicad_curl.h
+new file mode 100644
+index 00000000..3639400c
+--- /dev/null
++++ b/include/kicad_curl/kicad_curl.h
+@@ -0,0 +1,82 @@
++/*
++ * This program source code file is part of KiCad, a free EDA CAD application.
++ *
++ * Copyright (C) 2015 Mark Roszko <mark.roszko@gmail.com>
++ * Copyright (C) 2015 KiCad Developers, see CHANGELOG.TXT for contributors.
++ *
++ * 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 the Free Software Foundation; either version 3
++ * of the License, or (at your option) any later version.
++ *
++ * 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.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, you may find one here:
++ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
++ * or you may search the http://www.gnu.org website for the version 2 license,
++ * or you may write to the Free Software Foundation, Inc.,
++ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
++ */
++#ifndef KICAD_CURL_H_
++#define KICAD_CURL_H_
++
++/*
++ * KICAD_CURL.h must be included before wxWidgets because on Windows,
++ * wxWidgets ends up including windows.h before winsocks2.h inside curl
++ * this causes build warnings
++ * Because we are before wx, we must explicitly define we are building with unicode.
++ * wxWidgets defaults to supporting unicode now, so this should be safe.
++ */
++#if defined(WIN32)
++    #ifndef UNICODE
++    #    define UNICODE
++    #endif
++
++    #ifndef _UNICODE
++    #    define _UNICODE
++    #endif
++#endif
++
++#include <curl/curl.h>
++#include <string>
++
++/**
++ * Class KICAD_CURL
++ * simple wrapper class to call curl_global_init and curl_global_cleanup for KiCad.
++ */
++class KICAD_CURL
++{
++public:
++    /**
++     * Function Init
++     * calls curl_global_init for the application. It must be used only once
++     * and before any curl functions that perform requests.
++     *
++     * @return bool - True if successful, false if CURL returned an error
++     */
++    static bool Init();
++
++    /**
++     * Function Cleanup
++     * calls curl_global_cleanup for the application. It must be used only after
++     * curl_global_init was called.
++     */
++    static void Cleanup();
++
++    /**
++     * Function GetVersion
++     * wrapper for curl_version(). Reports back a short string of loaded libraries.
++     *
++     * @return std::string - String reported by libcurl
++     */
++    static std::string GetVersion();
++
++private:
++    static bool m_initialized;
++};
++
++#endif // KICAD_CURL_H_
+\ No newline at end of file
+diff --git a/include/kicad_curl/kicad_curl_easy.h b/include/kicad_curl/kicad_curl_easy.h
+new file mode 100644
+index 00000000..a87c3d02
+--- /dev/null
++++ b/include/kicad_curl/kicad_curl_easy.h
+@@ -0,0 +1,166 @@
++/*
++ * This program source code file is part of KiCad, a free EDA CAD application.
++ *
++ * Copyright (C) 2015 Mark Roszko <mark.roszko@gmail.com>
++ * Copyright (C) 2015 KiCad Developers, see CHANGELOG.TXT for contributors.
++ *
++ * 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 the Free Software Foundation; either version 3
++ * of the License, or (at your option) any later version.
++ *
++ * 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.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, you may find one here:
++ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
++ * or you may search the http://www.gnu.org website for the version 2 license,
++ * or you may write to the Free Software Foundation, Inc.,
++ * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
++ */
++#ifndef KICAD_CURL_EASY_H_
++#define KICAD_CURL_EASY_H_
++
++/*
++ * KICAD_CURL_EASY.h must included before wxWidgets because on Windows,
++ * wxWidgets ends up including windows.h before winsocks2.h inside curl
++ * this causes build warnings 
++ * Because we are before wx, we must explicitly define we are building with unicode
++ * wxWidgets defaults to supporting unicode now, so this should be safe.
++ */
++#if defined(WIN32)
++    #ifndef UNICODE
++    #    define UNICODE
++    #endif
++
++    #ifndef _UNICODE
++    #    define _UNICODE
++    #endif
++#endif
++
++
++#include <curl/curl.h>
++#include <string>
++
++/**
++ * Struct KICAD_EASY_CURL_BUFFER
++ * is a struct used for storing the libcurl received data in its callbacks.
++ * Do not use directly, KICAD_CURL_EASY uses it.
++ */
++struct KICAD_EASY_CURL_BUFFER
++{
++    char* payload;
++    size_t size;
++};
++
++
++/**
++ * Class KICAD_CURL_EASY
++ * wrapper interface around the curl_easy API
++ *
++ * Handling of using the curl_easy API to make a request and save the response to
++ * a memory buffer
++ *
++ * Here is a small example usage:
++ * @code
++ *   KICAD_CURL_EASY curl;
++ *   curl.SetURL("http://github.com");
++ *   curl.SetUserAgent("KiCad-EDA");
++ *   curl.SetHeader("Accept", "application/json");
++ *   curl.Perform();
++ * @endcode
++ */
++class KICAD_CURL_EASY
++{
++public:
++    KICAD_CURL_EASY();
++    ~KICAD_CURL_EASY();
++
++    /**
++     * Function perform
++     * equivalent to curl_easy_perform. Executes the request
++     * that was previously setup.
++     *
++     * @throw IO_ERROR, if there is a CURL request error
++     */
++    void Perform();
++
++    /**
++     * Function SetHeader
++     * sets an arbitrary header for the HTTP(s) request.
++     *
++     * @param aName is the left hand side of the header, i.e. Accept without the colon
++     * @param aValue is the right hand side of the header, i.e. application/json
++     */
++    void SetHeader( const std::string& aName, const std::string& aValue );
++
++    /**
++     * Function SetUserAgent
++     * sets the request user agent
++     *
++     * @param aAgent is the string to set for the user agent
++     * @return bool - True if successful, false if not
++     */
++    bool SetUserAgent( const std::string& aAgent );
++
++    /**
++     * Function SetURL
++     * sets the request URL
++     *
++     * @param aURL is the URL
++     * @return bool - True if successful, false if not
++     */
++    bool SetURL( const std::string& aURL );
++
++    /**
++     * Function SetFollowRedirects
++     * enables the following of HTTP(s) and other redirects, by default curl
++     * does not follow redirects.
++     *
++     * @param aFollow is a boolean where true will enable following redirects
++     * @return bool - True if successful, false if not
++     */
++    bool SetFollowRedirects( bool aFollow );
++
++    /**
++     * Function GetErrorText
++     * fetches CURL's "friendly" error string for a given error code
++     *
++     * @param aCode is CURL error code
++     * @return std::string - the corresponding error string for the given code
++     */
++    std::string GetErrorText( CURLcode aCode );
++
++    /**
++     * Function SetOption
++     * sets a curl option, only supports single parameter curl options
++     *
++     * @param aOption is CURL option, see CURL manual for options
++     * @param aArg is the argument being passed to CURL, ensure it is the right type per manual
++     * @return CURLcode - CURL error code, will return CURLE_OK unless a problem was encountered
++     */
++    template <typename T> CURLcode SetOption( CURLoption aOption, T aArg ) 
++    { 
++        return curl_easy_setopt( m_CURL, aOption, aArg ); 
++    }
++
++    /**
++     * Function GetBuffer
++     * returns a const pointer to the data buffer
++     *
++     * @return KICAD_EASY_CURL_BUFFER* - pointer to buffer
++     */
++    const KICAD_EASY_CURL_BUFFER* GetBuffer()
++    {
++        return &m_Buffer;
++    }
++private:
++    CURL *m_CURL;
++    struct curl_slist *m_headers;
++    struct KICAD_EASY_CURL_BUFFER m_Buffer;
++};
++
++#endif // KICAD_CURL_EASY_H_
+\ No newline at end of file
+diff --git a/pcbnew/github/CMakeLists.txt b/pcbnew/github/CMakeLists.txt
+index d630c69a..bb37ebf5 100644
+--- a/pcbnew/github/CMakeLists.txt
++++ b/pcbnew/github/CMakeLists.txt
+@@ -20,38 +20,14 @@
+ #  or you may write to the Free Software Foundation, Inc.,
+ #  51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+-
+-
+-# Download avhttp and install the headers, not actually compiled
+-#################################################
+-include( download_avhttp )
+-
+-if( MINGW AND NOT OPENSSL_ROOT_DIR )
+-    # download, compile and install to scratch dir a recent OPENSSL library and headers
+-    include( download_openssl )
+-else()
+-    find_package( OpenSSL REQUIRED )
+-    #message( STATUS "OPENSSL_FOUND:${OPENSSL_FOUND}  OPENSSL_LIBRARIES:${OPENSSL_LIBRARIES}" )
+-
+-    # FindOpenSSL.cmake does not set this var into cache, so is not globally visible,
+-    # do it here incase some other link image needs these libraries
+-    set( OPENSSL_LIBRARIES   "${OPENSSL_LIBRARIES}"   CACHE FILEPATH "OpenSSL link libraries" )
+-    set( OPENSSL_INCLUDE_DIR "${OPENSSL_INCLUDE_DIR}" CACHE FILEPATH "OpenSSL include dir" )
+-endif()
+-
+-
+ # These are additions to any inherited from pcbnew dir:
+-include_directories( . ${OPENSSL_INCLUDE_DIR} ${AVHTTP_INCLUDE_DIR} )
++include_directories( . )
+ # Tell AVHTTP we have SSL.
+-add_definitions( -DAVHTTP_ENABLE_OPENSSL )
+-
+-# tone down the compiler warnings for avhttp header library:
+-set( CMAKE_CXX_FLAGS
+-    "${CMAKE_CXX_FLAGS} -Wno-sign-compare -Wno-reorder -Wno-unused-variable -Wno-unused-function -Wno-strict-aliasing" )
+-
+ set( GITHUB_PLUGIN_SRCS
+-    github_plugin.cpp github_getliblist.cpp html_link_parser.cpp
++    github_plugin.cpp 
++    github_getliblist.cpp
++    html_link_parser.cpp
+     )
+ add_library( github_plugin STATIC ${GITHUB_PLUGIN_SRCS} )
+@@ -59,7 +35,7 @@ add_library( github_plugin STATIC ${GITHUB_PLUGIN_SRCS} )
+ # No, you don't get github without boost and openssl. Boost_LIBRARIES now moved up
+ # into CMakeLists.txt for pcbnew and cvpcb:
+ target_link_libraries( github_plugin
+-    ${OPENSSL_LIBRARIES}
++    common
+     )
+ if( MINGW )
+@@ -70,9 +46,4 @@ if( MINGW )
+ endif()
+ add_dependencies( github_plugin boost )
+-add_dependencies( github_plugin avhttp )
+-
+-if( MINGW AND NOT OPENSSL_ROOT_DIR )
+-    add_dependencies( github_plugin openssl )
+-endif()
+diff --git a/pcbnew/github/github_getliblist.cpp b/pcbnew/github/github_getliblist.cpp
+index 00fcaca2..baf5f7c2 100644
+--- a/pcbnew/github/github_getliblist.cpp
++++ b/pcbnew/github/github_getliblist.cpp
+@@ -41,35 +41,7 @@
+  *  JP Charras.
+  */
+-
+-#if 0
+-/*
+- *  FIX ME
+- *  I do not include avhttp.hpp here, because it is already included in
+- *  github_plugin.cpp
+- *  and if it is also included in this file, the link fails (double definiton of modules)
+- *  therefore, the GITHUB_GETLIBLIST method which uses avhttp to download dats from gitub
+- *  is in github_plugin.cpp
+- */
+-
+-#ifndef WIN32_LEAN_AND_MEAN
+-// when WIN32_LEAN_AND_MEAN is defined, some useless includes in <window.h>
+-// are skipped, and this avoid some compil issues
+-#define WIN32_LEAN_AND_MEAN
+-#endif
+-
+-#ifdef WIN32
+-// defines needed by avhttp
+-// Minimal Windows version is XP: Google for _WIN32_WINNT
+- #define _WIN32_WINNT   0x0501
+- #define WINVER         0x0501
+-#endif
+-
+-#include <wx/wx.h>
+-#include <avhttp.hpp>
+-
+-#endif
+-
++#include <kicad_curl/kicad_curl_easy.h> /* Include before any wx file */
+ #include <wx/uri.h>
+ #include <github_getliblist.h>
+@@ -97,7 +69,7 @@ bool GITHUB_GETLIBLIST::Get3DshapesLibsList( wxArrayString* aList,
+     wxString errorMsg;
+     fullURLCommand = repoURL.utf8_str();
+-    bool success = remote_get_json( &fullURLCommand, &errorMsg );
++    bool success = remoteGetJSON( fullURLCommand, &errorMsg );
+     if( !success )
+     {
+@@ -147,7 +119,7 @@ bool GITHUB_GETLIBLIST::GetFootprintLibraryList( wxArrayString& aList )
+     while( 1 )
+     {
+-        bool success = remote_get_json( &fullURLCommand, &errorMsg );
++        bool success = remoteGetJSON( fullURLCommand, &errorMsg );
+         if( !success )
+         {
+@@ -235,3 +207,37 @@ bool GITHUB_GETLIBLIST::repoURL2listURL( const wxString& aRepoURL,
+     return false;
+ }
++
++
++bool GITHUB_GETLIBLIST::remoteGetJSON( const std::string& aFullURLCommand, wxString* aMsgError )
++{
++    KICAD_CURL_EASY kcurl;
++    
++    wxLogDebug( wxT( "Attempting to download: " ) + aFullURLCommand );
++
++    kcurl.SetURL(aFullURLCommand);
++    kcurl.SetUserAgent("KiCad-EDA");
++    kcurl.SetHeader("Accept", m_option_string);
++    kcurl.SetFollowRedirects(true);
++
++    try
++    {
++        kcurl.Perform();
++        m_image.assign(kcurl.GetBuffer()->payload, kcurl.GetBuffer()->size);
++        return true;
++    }
++    catch( const IO_ERROR& ioe )
++    {
++        if( aMsgError )
++        {
++            UTF8 fmt( _( "Error fetching JSON data from URL '%s'.\nReason: '%s'" ) );
++            
++            std::string msg = StrPrintf( fmt.c_str(), 
++                                         aFullURLCommand.c_str(),
++                                         TO_UTF8( ioe.errorText ) );
++
++            *aMsgError = FROM_UTF8( msg.c_str() );
++        }
++        return false;
++    }
++}
+\ No newline at end of file
+diff --git a/pcbnew/github/github_getliblist.h b/pcbnew/github/github_getliblist.h
+index 6fd05980..0d38b8ae 100644
+--- a/pcbnew/github/github_getliblist.h
++++ b/pcbnew/github/github_getliblist.h
+@@ -103,7 +103,7 @@ protected:
+             int aItemCountMax, int aPage = 1 );
+     /**
+-     * Function remote_get_json
++     * Function remoteGetJSON
+      * Download a json text from a github repo.  The text image
+      * is received into the m_input_stream.
+      * @param aFullURLCommand the full command, i.e. the url with options like
+@@ -111,7 +111,7 @@ protected:
+      * @param aMsgError a pointer to a wxString which can store an error message
+      * @return true if OK, false if error (which an error message in *aMsgError
+      */
+-    bool remote_get_json( std::string* aFullURLCommand, wxString* aMsgError );
++    bool remoteGetJSON( const std::string& aFullURLCommand, wxString* aMsgError );
+     wxString m_github_path;     ///< Something like https://api.github.com/orgs/KiCad
+     std::string m_image;        ///< image of the downloaded data in its entirety.
+diff --git a/pcbnew/github/github_plugin.cpp b/pcbnew/github/github_plugin.cpp
+index 963a81c4..db96ae18 100644
+--- a/pcbnew/github/github_plugin.cpp
++++ b/pcbnew/github/github_plugin.cpp
+@@ -38,8 +38,7 @@ I have lost my enthusiasm for local caching until a faster time stamp retrieval
+ mechanism can be found, or github gets more servers.  But note that the occasionally
+ slow response is the exception rather than the norm.  Normally the response is
+ down around a 1/3 of a second.  The information we would use is in the header
+-named "Last-Modified" as seen below.  This would need parsing, but avhttp may
+-offer some help there, if not, then boost async probably does.
++named "Last-Modified" as seen below. 
+ HTTP/1.1 200 OK
+@@ -64,20 +63,7 @@ X-GitHub-Request-Id: 411087C2:659E:50FD6E6:52E67F66
+ Vary: Accept-Encoding
+ */
+-
+-
+-#ifndef WIN32_LEAN_AND_MEAN
+-// when WIN32_LEAN_AND_MEAN is defined, some useless includes in <window.h>
+-// are skipped, and this avoid some compil issues
+-#define WIN32_LEAN_AND_MEAN
+-#endif
+-
+-#ifdef WIN32
+- // defines needed by avhttp
+- // Minimal Windows version is XP: Google for _WIN32_WINNT
+- #define _WIN32_WINNT   0x0501
+- #define WINVER         0x0501
+-#endif
++#include <kicad_curl/kicad_curl_easy.h> /* Include before any wx file */
+ #include <sstream>
+ #include <boost/ptr_container/ptr_map.hpp>
+@@ -88,10 +74,6 @@ Vary: Accept-Encoding
+ #include <wx/uri.h>
+ #include <fctsys.h>
+-// Under Windows Mingw/msys, avhttp.hpp should be included after fctsys.h
+-// in fact after wx/wx.h, included by fctsys.h,
+-// to avoid issues (perhaps due to incompatible defines)
+-#include <avhttp.hpp>                       // chinese SSL magic
+ #include <io_mgr.h>
+ #include <richio.h>
+@@ -103,6 +85,7 @@ Vary: Accept-Encoding
+ #include <fp_lib_table.h>       // ExpandSubstitutions()
+ #include <github_getliblist.h>
++
+ using namespace std;
+@@ -431,7 +414,7 @@ void GITHUB_PLUGIN::cacheLib( const wxString& aLibraryPath, const PROPERTIES* aP
+         m_gh_cache = new GH_CACHE();
+         // INIT_LOGGER( "/tmp", "test.log" );
+-        remote_get_zip( aLibraryPath );
++        remoteGetZip( aLibraryPath );
+         // UNINIT_LOGGER();
+         m_lib_path = aLibraryPath;
+@@ -460,7 +443,7 @@ void GITHUB_PLUGIN::cacheLib( const wxString& aLibraryPath, const PROPERTIES* aP
+ }
+-bool GITHUB_PLUGIN::repoURL_zipURL( const wxString& aRepoURL, string* aZipURL )
++bool GITHUB_PLUGIN::repoURL_zipURL( const wxString& aRepoURL, std::string& aZipURL )
+ {
+     // e.g. "https://github.com/liftoff-sr/pretty_footprints"
+     //D(printf("aRepoURL:%s\n", TO_UTF8( aRepoURL ) );)
+@@ -470,12 +453,12 @@ bool GITHUB_PLUGIN::repoURL_zipURL( const wxString& aRepoURL, string* aZipURL )
+     if( repo.HasServer() && repo.HasPath() )
+     {
+         // scheme might be "http" or if truly github.com then "https".
+-        wxString zip_url = repo.GetScheme();
+-
+-        zip_url += "://";
++        wxString zip_url;
+         if( repo.GetServer() == "github.com" )
+         {
++            //codeload.github.com only supports https
++            zip_url = "https://";
+ #if 0       // A proper code path would be this one, but it is not the fastest.
+             zip_url += repo.GetServer();
+             zip_url += repo.GetPath();      // path comes with a leading '/'
+@@ -488,8 +471,6 @@ bool GITHUB_PLUGIN::repoURL_zipURL( const wxString& aRepoURL, string* aZipURL )
+             // In order to bypass this redirect, saving time, we use the
+             // redirected URL on first attempt to save one HTTP GET hit.
+-            // avhttp would do the redirect behind the scenes normally, but that would
+-            // be slower than doing this bypass.
+             zip_url += "codeload.github.com";
+             zip_url += repo.GetPath();      // path comes with a leading '/'
+             zip_url += "/zip/master";
+@@ -498,9 +479,11 @@ bool GITHUB_PLUGIN::repoURL_zipURL( const wxString& aRepoURL, string* aZipURL )
+         else
+         {
++            zip_url = repo.GetScheme();
++            zip_url += "://";
++
+             // This is the generic code path for any server which can serve
+             // up zip files. The schemes tested include: http and https.
+-            // (I don't know what the avhttp library supports beyond that.)
+             // zip_url goal: "<scheme>://<server>[:<port>]/<path>"
+@@ -526,126 +509,50 @@ bool GITHUB_PLUGIN::repoURL_zipURL( const wxString& aRepoURL, string* aZipURL )
+             // this code path with the needs of one particular inflexible server.
+         }
+-        *aZipURL = zip_url.utf8_str();
++        aZipURL = zip_url.utf8_str();
+         return true;
+     }
+     return false;
+ }
+-void GITHUB_PLUGIN::remote_get_zip( const wxString& aRepoURL ) throw( IO_ERROR )
++void GITHUB_PLUGIN::remoteGetZip( const wxString& aRepoURL ) throw( IO_ERROR )
+ {
+-    string  zip_url;
++    std::string  zip_url;
+-    if( !repoURL_zipURL( aRepoURL, &zip_url ) )
++    if( !repoURL_zipURL( aRepoURL, zip_url ) )
+     {
+         wxString msg = wxString::Format( _( "Unable to parse URL:\n'%s'" ), GetChars( aRepoURL ) );
+         THROW_IO_ERROR( msg );
+     }
+-    boost::asio::io_service io;
+-    avhttp::http_stream     h( io );
+-    avhttp::request_opts    options;
++    wxLogDebug( wxT( "Attempting to download: " ) + zip_url );
+-    options.insert( "Accept",       "application/zip" );
+-    options.insert( "User-Agent",   "http://kicad-pcb.org" );   // THAT WOULD BE ME.
+-    h.request_options( options );
++    KICAD_CURL_EASY kcurl;
++
++    kcurl.SetURL(zip_url.c_str());
++    kcurl.SetUserAgent("KiCad-EDA");
++    kcurl.SetHeader("Accept", "application/zip");
++    kcurl.SetFollowRedirects(true);
+     try
+     {
+-        ostringstream os;
+-
+-        h.open( zip_url );      // only one file, therefore do it synchronously.
+-        os << &h;
+-
+-        // Keep zip file byte image in RAM.  That plus the MODULE_MAP will constitute
+-        // the cache.  We don't cache the MODULEs per se, we parse those as needed from
+-        // this zip file image.
+-        m_zip_image = os.str();
+-
+-        // 4 lines, using SSL, top that.
++        kcurl.Perform();
++        m_zip_image.assign(kcurl.GetBuffer()->payload, kcurl.GetBuffer()->size);
+     }
+-    catch( const boost::system::system_error& e )
++    catch( const IO_ERROR& ioe )
+     {
+-        // https "GET" has faild, report this to API caller.
+-        static const char errorcmd[] = "http GET command failed";  // Do not translate this message
+-
+         UTF8 fmt( _( "%s\nCannot get/download Zip archive: '%s'\nfor library path: '%s'.\nReason: '%s'" ) );
+-        string msg = StrPrintf( fmt.c_str(),
+-                errorcmd,
+-                // Report both secret zip_url and Lib Path, to user.  The secret
+-                // zip_url may go bad at some point in future if github changes
+-                // their server architecture.  Then fix repoURL_zipURL() to reflect
+-                // new architecture.
+-                zip_url.c_str(), TO_UTF8( aRepoURL ),
+-                e.what() );
+-
+-        THROW_IO_ERROR( msg );
+-    }
+-    catch( const exception& exc )
+-    {
+-        UTF8 error( _( "Exception '%s' in avhttp while open()-ing URI:'%s'" ) );
++        std::string msg = StrPrintf( fmt.c_str(), 
++                                     zip_url.c_str(), 
++                                     TO_UTF8( aRepoURL ),
++                                     TO_UTF8( ioe.errorText ) );
+-        string msg = StrPrintf( error.c_str(), exc.what(), zip_url.c_str() );
+         THROW_IO_ERROR( msg );
+     }
+ }
+-
+-// This GITHUB_GETLIBLIST method should not be here, but in github_getliblist.cpp !
+-// However it is here just because we need to include <avhttp.hpp> to compile it.
+-// and when we include avhttp in two .cpp files, the link fails because it detects duplicate
+-// avhttp functions.
+-// So until it is fixed, this code is here.
+-bool GITHUB_GETLIBLIST::remote_get_json( std::string* aFullURLCommand, wxString* aMsgError )
+-{
+-    boost::asio::io_service io;
+-    avhttp::http_stream     h( io );
+-    avhttp::request_opts    options;
+-
+-
+-    options.insert( "Accept", m_option_string );
+-    options.insert( "User-Agent", "http://kicad-pcb.org" );   // THAT WOULD BE ME.
+-    h.request_options( options );
+-
+-    try
+-    {
+-        std::ostringstream os;
+-
+-        h.open( *aFullURLCommand );      // only one file, therefore do it synchronously.
+-        os << &h;
+-
+-        // Keep downloaded text file image in RAM.
+-        m_image = os.str();
+-
+-        // 4 lines, using SSL, top that.
+-    }
+-    catch( boost::system::system_error& e )
+-    {
+-        // https "GET" has faild, report this to API caller.
+-        static const char errorcmd[] = "https GET command failed";  // Do not translate this message
+-
+-        UTF8 fmt( _( "%s\nCannot get/download data from: '%s'\nReason: '%s'" ) );
+-
+-        std::string msg = StrPrintf( fmt.c_str(),
+-                errorcmd,
+-                // Report secret list_url to user.  The secret
+-                // list_url may go bad at some point in future if github changes
+-                // their server architecture.  Then fix repoURL_zipURL() to reflect
+-                // new architecture.
+-                aFullURLCommand->c_str(), e.what() );
+-
+-        if( aMsgError )
+-        {
+-            *aMsgError = FROM_UTF8( msg.c_str() );
+-            return false;
+-        }
+-    }
+-
+-    return true;
+-}
+-
+ #if 0 && defined(STANDALONE)
+ int main( int argc, char** argv )
+diff --git a/pcbnew/github/github_plugin.h b/pcbnew/github/github_plugin.h
+index 4bb8248f..f930821e 100644
+--- a/pcbnew/github/github_plugin.h
++++ b/pcbnew/github/github_plugin.h
+@@ -210,14 +210,14 @@ protected:
+      * @param  aZipURL is where to put the zip file URL.
+      * @return bool - true if @a aRepoULR was parseable, else false
+      */
+-    static bool repoURL_zipURL( const wxString& aRepoURL, std::string* aZipURL );
++    static bool repoURL_zipURL( const wxString& aRepoURL, std::string& aZipURL );
+     /**
+-     * Function remote_get_zip
++     * Function remoteGetZip
+      * fetches a zip file image from a github repo synchronously.  The byte image
+      * is received into the m_input_stream.
+      */
+-    void remote_get_zip( const wxString& aRepoURL ) throw( IO_ERROR );
++    void remoteGetZip( const wxString& aRepoURL ) throw( IO_ERROR );
+     wxString    m_lib_path;     ///< from aLibraryPath, something like https://github.com/liftoff-sr/pretty_footprints
+     std::string m_zip_image;    ///< byte image of the zip file in its entirety.
diff --git a/patches/porting-kfreebsd-hurd/Fix-FTBFS-on-kFreeBSD-and-Hurd.patch b/patches/porting-kfreebsd-hurd/Fix-FTBFS-on-kFreeBSD-and-Hurd.patch
new file mode 100644 (file)
index 0000000..52969f8
--- /dev/null
@@ -0,0 +1,23 @@
+From: Georges Khaznadar <georgesk@debian.org>
+Date: Sat, 3 Sep 2016 17:57:10 +0200
+Subject: Fix FTBFS on kFreeBSD and Hurd
+
+The modification should allow the package to be built on new platforms:
+hurd and *freebsd.
+---
+ include/kiway.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/include/kiway.h b/include/kiway.h
+index 3ec5af8c..c8c919ee 100644
+--- a/include/kiway.h
++++ b/include/kiway.h
+@@ -114,7 +114,7 @@ as such!  As such, it is OK to use UTF8 characters:
+ // be mangled.
+ #define KIFACE_INSTANCE_NAME_AND_VERSION   "KIFACE_1"
+-#if defined(__linux__) || defined(__FreeBSD__)
++#if defined(__linux__) || defined(__GLIBC__) || defined(__FreeBSD__) || defined(__GNU__)
+  #define LIB_ENV_VAR    wxT( "LD_LIBRARY_PATH" )
+ #elif defined(__WXMAC__)
+  #define LIB_ENV_VAR    wxT( "DYLD_LIBRARY_PATH" )
diff --git a/patches/reproducibility/add-field-revdate-to-asciidoc-files-of-documentation.patch b/patches/reproducibility/add-field-revdate-to-asciidoc-files-of-documentation.patch
new file mode 100644 (file)
index 0000000..7ccc27a
--- /dev/null
@@ -0,0 +1,143 @@
+From: Carsten Schoenert <c.schoenert@t-online.de>
+Date: Thu, 13 Oct 2016 21:08:18 +0200
+Subject: add field 'revdate' to asciidoc files of documentation
+
+For reproducibility we need to set up a date that's not depending on the
+current time and timezone. We add a extra asciidoc control field
+'revdate' and expand the variable behind that while building the package
+with the date from the changelog file.
+---
+ doc/src/cvpcb/cvpcb.adoc                                       | 1 +
+ doc/src/doc_writing_style_policy/doc_writing_style_policy.adoc | 1 +
+ doc/src/eeschema/eeschema.adoc                                 | 1 +
+ doc/src/gerbview/gerbview.adoc                                 | 1 +
+ doc/src/getting_started_in_kicad/getting_started_in_kicad.adoc | 1 +
+ doc/src/gui_translation_howto/gui_translation_howto.adoc       | 1 +
+ doc/src/idf_exporter/idf_exporter.adoc                         | 1 +
+ doc/src/kicad/kicad.adoc                                       | 1 +
+ doc/src/pcbnew/pcbnew.adoc                                     | 1 +
+ doc/src/pl_editor/pl_editor.adoc                               | 1 +
+ doc/src/plugins/plugins.adoc                                   | 1 +
+ 11 files changed, 11 insertions(+)
+
+diff --git a/doc/src/cvpcb/cvpcb.adoc b/doc/src/cvpcb/cvpcb.adoc
+index 018c825d..93f4f409 100644
+--- a/doc/src/cvpcb/cvpcb.adoc
++++ b/doc/src/cvpcb/cvpcb.adoc
+@@ -1,5 +1,6 @@
+ :author: The KiCad Team
+ :doctype: article
++:revdate: @REVDATE@
+ :toc:
+ :ascii-ids:
+diff --git a/doc/src/doc_writing_style_policy/doc_writing_style_policy.adoc b/doc/src/doc_writing_style_policy/doc_writing_style_policy.adoc
+index 9e343017..ba839e34 100644
+--- a/doc/src/doc_writing_style_policy/doc_writing_style_policy.adoc
++++ b/doc/src/doc_writing_style_policy/doc_writing_style_policy.adoc
+@@ -1,5 +1,6 @@
+ :author: The KiCad Team
+ :doctype: article
++:revdate: @REVDATE@
+ :toc:
+ :ascii-ids:
+diff --git a/doc/src/eeschema/eeschema.adoc b/doc/src/eeschema/eeschema.adoc
+index 16604739..0ecc579f 100644
+--- a/doc/src/eeschema/eeschema.adoc
++++ b/doc/src/eeschema/eeschema.adoc
+@@ -1,5 +1,6 @@
+ :author: The KiCad Team
+ :doctype: book
++:revdate: @REVDATE@
+ :toc:
+ :ascii-ids:
+diff --git a/doc/src/gerbview/gerbview.adoc b/doc/src/gerbview/gerbview.adoc
+index 0c88398d..4708ac28 100644
+--- a/doc/src/gerbview/gerbview.adoc
++++ b/doc/src/gerbview/gerbview.adoc
+@@ -1,5 +1,6 @@
+ :author: The KiCad Team
+ :doctype: article
++:revdate: @REVDATE@
+ :toc:
+ :ascii-ids:
+diff --git a/doc/src/getting_started_in_kicad/getting_started_in_kicad.adoc b/doc/src/getting_started_in_kicad/getting_started_in_kicad.adoc
+index 1443dde1..17b1b16b 100644
+--- a/doc/src/getting_started_in_kicad/getting_started_in_kicad.adoc
++++ b/doc/src/getting_started_in_kicad/getting_started_in_kicad.adoc
+@@ -1,5 +1,6 @@
+ :author: The KiCad Team
+ :doctype: book
++:revdate: @REVDATE@
+ :toc:
+ :ascii-ids:
+diff --git a/doc/src/gui_translation_howto/gui_translation_howto.adoc b/doc/src/gui_translation_howto/gui_translation_howto.adoc
+index 8eeff10d..b0bf3d9c 100644
+--- a/doc/src/gui_translation_howto/gui_translation_howto.adoc
++++ b/doc/src/gui_translation_howto/gui_translation_howto.adoc
+@@ -1,5 +1,6 @@
+ :author: The KiCad Team
+ :doctype: article
++:revdate: @REVDATE@
+ :toc:
+ :ascii-ids:
+diff --git a/doc/src/idf_exporter/idf_exporter.adoc b/doc/src/idf_exporter/idf_exporter.adoc
+index 57e3e9e0..d99bec77 100644
+--- a/doc/src/idf_exporter/idf_exporter.adoc
++++ b/doc/src/idf_exporter/idf_exporter.adoc
+@@ -1,5 +1,6 @@
+ :author: The KiCad Team
+ :doctype: article
++:revdate: @REVDATE@
+ :toc:
+ :ascii-ids:
+diff --git a/doc/src/kicad/kicad.adoc b/doc/src/kicad/kicad.adoc
+index 1f17b452..b26fb750 100644
+--- a/doc/src/kicad/kicad.adoc
++++ b/doc/src/kicad/kicad.adoc
+@@ -1,5 +1,6 @@
+ :author: The KiCad Team
+ :doctype: book
++:revdate: @REVDATE@
+ :toc:
+ :ascii-ids:
+diff --git a/doc/src/pcbnew/pcbnew.adoc b/doc/src/pcbnew/pcbnew.adoc
+index 3f229e68..332bc525 100644
+--- a/doc/src/pcbnew/pcbnew.adoc
++++ b/doc/src/pcbnew/pcbnew.adoc
+@@ -1,5 +1,6 @@
+ :author: The KiCad Team
+ :doctype: book
++:revdate: @REVDATE@
+ :toc:
+ :ascii-ids:
+diff --git a/doc/src/pl_editor/pl_editor.adoc b/doc/src/pl_editor/pl_editor.adoc
+index d27a65ac..2af44d66 100644
+--- a/doc/src/pl_editor/pl_editor.adoc
++++ b/doc/src/pl_editor/pl_editor.adoc
+@@ -1,5 +1,6 @@
+ :author: The KiCad Team
+ :doctype: article
++:revdate: @REVDATE@
+ :toc:
+ :ascii-ids:
+diff --git a/doc/src/plugins/plugins.adoc b/doc/src/plugins/plugins.adoc
+index e91d64d9..6cdfdc6a 100644
+--- a/doc/src/plugins/plugins.adoc
++++ b/doc/src/plugins/plugins.adoc
+@@ -1,5 +1,6 @@
+ :author: The KiCad Team
+ :doctype: article
++:revdate: @REVDATE@
+ :toc:
+ :ascii-ids:
diff --git a/patches/series b/patches/series
new file mode 100644 (file)
index 0000000..7d20f6c
--- /dev/null
@@ -0,0 +1,14 @@
+debian-hacks/Remove-download-target-for-noAvhttp.patch
+fixes/Modifing-the-Exec-cmd-in-the-desktop-files.patch
+debian-hacks/Adding-needed-SVG-files-and-additinal-arrays.patch
+porting-kfreebsd-hurd/Fix-FTBFS-on-kFreeBSD-and-Hurd.patch
+fixes/Fix-FTBFS-with-Boost-1.61.patch
+fixes/Fixing-some-spelling-issues.patch
+fixes/Replace-the-avhttp-library-used-by-the-github-plugin-with.patch
+fixes/Add-missing-dependency-github_plugin-pcbcommon.patch
+fixes/Replace-avhttp-with-libcurl.patch
+fixes/Remove-unused-FindOpenSSL.cmake.patch
+fixes/Fix-issue-170-for-real.patch
+fixes/KiCadDocumentation.cmake-fix-install-target-for-HTML-docu.patch
+reproducibility/add-field-revdate-to-asciidoc-files-of-documentation.patch
+debian-hacks/Removing-hyphen-inside-KICAD_FULL_VERSION.patch
diff --git a/rules b/rules
new file mode 100755 (executable)
index 0000000..bf311fe
--- /dev/null
+++ b/rules
@@ -0,0 +1,130 @@
+#!/usr/bin/make -f
+#export DH_VERBOSE=1
+
+export DEB_BUILD_MAINT_OPTIONS = hardening=+all
+DPKG_EXPORT_BUILDFLAGS = 1
+include /usr/share/dpkg/buildflags.mk
+CFLAGS+=$(CPPFLAGS)
+CXXFLAGS+=$(CPPFLAGS)
+
+# out of tree build folder for kicad application
+DEB_BUILD_DIR=debian/build
+# default install folder
+INSTDIR=$(CURDIR)/debian/tmp
+# catching make jobs from DEB_BUILD_OPTIONS
+PARALLEL_BUILD=$(echo $DEB_BUILD_OPTIONS | sed -e '/parallel=/!s/.*/1/;s/.*parallel=\([0-9]\+\).*/\1/g')
+
+# other variables
+VERSION_EXTRA   = $(shell dpkg-parsechangelog -S Version | cut -d+ -f2-)
+DATE            = $(shell date +'%Y-%m-%d' -d"`dpkg-parsechangelog -S Date`")
+export REVDATE := $(shell TZ=UTC date -d "$(shell dpkg-parsechangelog -S Date)" +%Y-%m-%d)
+
+ASCIIDOCFILES := \
+       doc/src/cvpcb/cvpcb.adoc \
+       doc/src/doc_writing_style_policy/doc_writing_style_policy.adoc \
+       doc/src/eeschema/eeschema.adoc \
+       doc/src/gerbview/gerbview.adoc \
+       doc/src/getting_started_in_kicad/getting_started_in_kicad.adoc \
+       doc/src/gui_translation_howto/gui_translation_howto.adoc \
+       doc/src/idf_exporter/idf_exporter.adoc \
+       doc/src/kicad/kicad.adoc \
+       doc/src/pcbnew/pcbnew.adoc \
+       doc/src/pl_editor/pl_editor.adoc \
+       doc/src/plugins/plugins.adoc \
+       $(NULL)
+
+DEB_KICAD_CMAKE_OPTS := \
+       -DKICAD_SKIP_BOOST=ON \
+       -DCMAKE_INSTALL_PREFIX=/usr \
+       -DCMAKE_CXX_FLAGS="$(CXXFLAGS)" \
+       -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="$(LDFLAGS)" \
+       -DBUILD_GITHUB_PLUGIN=ON \
+       -DKICAD_REPO_NAME=stable \
+       -DKICAD_VERSION_EXTRA="+$(VERSION_EXTRA)" \
+       -DDEFAULT_INSTALL_PATH=/usr \
+       -DKICAD_SCRIPTING=ON \
+       -DKICAD_SCRIPTING_MODULES=ON \
+       -DKICAD_SCRIPTING_WXPYTHON=ON \
+       $(NULL)
+
+DEB_DOC_CMAKE_OPTS := \
+       -DCMAKE_INSTALL_PREFIX=/usr \
+       $(NULL)
+
+DEB_I18N_CMAKE_OPTS := \
+       -DCMAKE_INSTALL_PREFIX=/usr \
+       -DKICAD_I18N_UNIX_STRICT_PATH=ON \
+       $(NULL)
+
+DEB_LIBRARIES_CMAKE_OPTS := \
+       -DCMAKE_INSTALL_PREFIX=/usr \
+       -DCMAKE_CXX_FLAGS="$(CXXFLAGS)" \
+       -DCMAKE_SHARED_LINKER_FLAGS_RELEASE="$(LDFLAGS)" \
+       $(NULL)
+
+%:
+       dh $@ --with-python2 --parallel
+
+override_dh_auto_configure:
+       sed -i 's/@REVDATE@/$(REVDATE)/' $(ASCIIDOCFILES)
+       mkdir -p $(DEB_BUILD_DIR)
+       # configuring KiCad application
+       dh_auto_configure --sourcedirectory=$(CURDIR) --builddirectory=$(DEB_BUILD_DIR) -- $(DEB_KICAD_CMAKE_OPTS)
+       # configuring KiCad documentation
+       dh_auto_configure --sourcedirectory=$(CURDIR)/doc --builddirectory=$(DEB_BUILD_DIR)/doc -- $(DEB_DOC_CMAKE_OPTS)
+       # configuring KiCad i18n files
+       dh_auto_configure --sourcedirectory=$(CURDIR)/i18n --builddirectory=$(DEB_BUILD_DIR)/i18n -- $(DEB_I18N_CMAKE_OPTS)
+       # configuring KiCad libraries
+       dh_auto_configure --sourcedirectory=$(CURDIR)/libraries/kicad-library --builddirectory=$(DEB_BUILD_DIR)/libraries -- $(DEB_LIBRARIES_CMAKE_OPTS)
+
+override_dh_auto_build:
+       # The other parts of KiCad like documentation, i18n files and the
+       # libraries don't need to be build as arch depended, they even
+       # don't need to be prebuild before calling dh_install. So ignoring
+       # here. Only build the KiCad application here.
+       dh_auto_build --sourcedirectory=$(CURDIR) --builddirectory=$(DEB_BUILD_DIR)
+
+override_dh_auto_install:
+       # installing KiCad application
+       dh_auto_install --destdir=$(INSTDIR) --sourcedirectory=$(CURDIR) --builddirectory=$(DEB_BUILD_DIR)
+       # building and installing KiCad documentation
+       dh_auto_install --destdir=$(INSTDIR) --sourcedirectory=$(CURDIR)/doc --builddirectory=$(DEB_BUILD_DIR)/doc
+       # installing KiCad i18n files
+       dh_auto_install --destdir=$(INSTDIR) --sourcedirectory=$(CURDIR)/i18n --builddirectory=$(DEB_BUILD_DIR)/i18n
+       # install KiCad libraries
+       dh_auto_install --destdir=$(INSTDIR) --sourcedirectory=$(CURDIR)/libraries/kicad-library --builddirectory=$(DEB_BUILD_DIR)/libraries
+       # some tweaks before running the next dh sequencers
+       # fixing icon sizes
+       images=$$(find $(INSTDIR)/usr/share/icons/hicolor/48x48 -name "*.png"); \
+       for f in $$images; do \
+               size=$$(identify $$f | sed -n 's/.* PNG \(4[^ ]*\) .*/\1/ p'); \
+               if [ "$$size" != "48x48" ]; then \
+                       echo "Resize $$(basename $$f) : $$size => 48x48"; \
+                       convert -resize '48x48!' $$f $$f.tmp && mv $$f.tmp $$f; \
+               fi; \
+       done
+       # The kicad XPM icon comes with a to high resolution, fixing before install.
+       convert -resize '32x32!' $(CURDIR)/bitmaps_png/icons/icon_kicad.xpm $(CURDIR)/bitmaps_png/icons/kicad.xpm
+       # remove the cvpcb desktop, it's history
+       rm $(INSTDIR)/usr/share/applications/cvpcb.desktop
+
+override_dh_install:
+       dh_install
+       dh_python2
+
+override_dh_fixperms-indep:
+       dh_fixperms
+       # fixing file permissions for *.py files in kicad-common
+       for i in `find $(CURDIR)/debian/kicad-common/usr -type f -name "*.py"`; do \
+               FOUND_PYTHON=$$(head -n1 $$i | grep python); \
+               if [ "$$FOUND_PYTHON" != "" ]; then \
+                       chmod +x $$i; \
+               else \
+                       chmod -x $$i; \
+               fi; \
+       done
+
+override_dh_strip-arch:
+       dh_strip
+       # strip unneeded symbols from the kicad specific libraries in /usr/lib/kicad/
+       strip --strip-unneeded --remove-section=.comment $(CURDIR)/debian/kicad/usr/lib/kicad/_*.kiface
diff --git a/source/format b/source/format
new file mode 100644 (file)
index 0000000..163aaf8
--- /dev/null
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/watch b/watch
new file mode 100644 (file)
index 0000000..866f1ab
--- /dev/null
+++ b/watch
@@ -0,0 +1,10 @@
+# No real watch provided.
+# Upstream is not always available in unix format and includes components that
+# we normally remove for licence reasons.
+# Upstream is packaged from git with some tweaks, see README.source.
+version=3
+
+#opts=pgpsigurlmangle=s/$1/.asc/, \
+opts=filenamemangle=s/(.*)\.tar\.xz/kicad-$1\.tar\.xz/g,\
+dversionmangle=s/\.dfsg\.\d+$// \
+https://launchpad.net/kicad/ .*\+download/kicad-(.*)\.tar\.xz