--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+#!/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
--- /dev/null
+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
--- /dev/null
+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.
--- /dev/null
+#!/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}
--- /dev/null
+# 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
--- /dev/null
+# 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
--- /dev/null
+# source # target
+usr/share/kicad/template/fp-lib-table.for-pretty usr/share/kicad/template/fp-lib-table
--- /dev/null
+# the warning is true, but we depend on arch specific package python
+kicad-common: package-contains-no-arch-dependent-files
--- /dev/null
+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
--- /dev/null
+usr/share/doc/kicad/help/ca
--- /dev/null
+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
--- /dev/null
+usr/share/doc/kicad/help/de
--- /dev/null
+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
--- /dev/null
+usr/share/doc/kicad/help/en
--- /dev/null
+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
--- /dev/null
+usr/share/doc/kicad/help/es
--- /dev/null
+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
--- /dev/null
+usr/share/doc/kicad/help/fr
--- /dev/null
+doc/doc/tutorials/hu/*.pdf usr/share/doc/kicad/tutorials/hu
+# doc/doc/help/hu/*.pdf usr/share/doc/kicad/help/hu
--- /dev/null
+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
--- /dev/null
+usr/share/doc/kicad/help/it
--- /dev/null
+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
--- /dev/null
+usr/share/doc/kicad/help/ja
--- /dev/null
+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
--- /dev/null
+usr/share/doc/kicad/help/nl
--- /dev/null
+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
--- /dev/null
+usr/share/doc/kicad/help/pl
--- /dev/null
+doc/doc/help/pt/*.pdf usr/share/doc/kicad/help/pt
--- /dev/null
+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
--- /dev/null
+usr/share/doc/kicad/help/ru
--- /dev/null
+doc/doc/tutorials/zh_CN/*.pdf usr/share/doc/kicad/tutorials/zh_CN
--- /dev/null
+[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,
--- /dev/null
+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
--- /dev/null
+# 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
--- /dev/null
+# 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
--- /dev/null
+debian/man/*.1
--- /dev/null
+.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>
--- /dev/null
+.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>
--- /dev/null
+.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>
--- /dev/null
+.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>
--- /dev/null
+.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>
--- /dev/null
+.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>
--- /dev/null
+.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>
--- /dev/null
+.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>
--- /dev/null
+.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>
--- /dev/null
+.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>
--- /dev/null
+.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>
--- /dev/null
+.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>
--- /dev/null
+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>
--- /dev/null
+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 )
--- /dev/null
+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
--- /dev/null
+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()
+
+
--- /dev/null
+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 );
+ }
--- /dev/null
+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()
+
+
--- /dev/null
+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.
Only library files in this list are loaded by Eeschema.
The order of this list is important:
Eeschema searchs for a given component using this list order priority.</property>
++ <property name="tooltip">List of active library files.
Only library files in this list are loaded by Eeschema.
The order of this list is important:
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.
So when a zone is inside an other zone:
* If its priority is highter: its outlines are removed from the other layer.
* If its priority is equal: a DRC error is set.</property>
++ <property name="tooltip">On each copper layer, zones are filled by priority order.
So when a zone is inside another zone:
* If its priority is highter: its outlines are removed from the other layer.
* 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.
Used mostly by users who make themselves the boards.</property>
++ <property name="tooltip">Not recommended.
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.
Use it only for board houses which do not accept fully featured headers.</property>
++ <property name="tooltip">Not recommended.
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.
Use it only for board houses which ask for merged PTH and NPTH into onlu one file</property>
++ <property name="tooltip">Not recommended.
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++ )
+ {
--- /dev/null
+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()
+
+
--- /dev/null
+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;
--- /dev/null
+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)
--- /dev/null
+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 )
+ {
--- /dev/null
+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.
--- /dev/null
+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" )
--- /dev/null
+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:
+
--- /dev/null
+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
--- /dev/null
+#!/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
--- /dev/null
+3.0 (quilt)
--- /dev/null
+# 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