summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes 'josch' Schauer <josch@debian.org>2019-01-06 23:54:27 +0100
committerJohannes 'josch' Schauer <josch@debian.org>2020-02-01 01:09:45 +0100
commite6e516f49697d4cb99a80851fbb037f32ac0949d (patch)
tree879c664285baea1e26bbfb6a9e666c117e1e7ca3
parent3e49246c2e44159486ea66fed3757cdb4e4d0c50 (diff)
Import Debian changes 0.15.0+dfsg1-1
searx (0.15.0+dfsg1-1) unstable; urgency=medium * New upstream release * Use require.min.js from libjs-requirejs and not from nodejs-requirejs (closes: #901738) * Update Homepage field to https://asciimoo.github.io/searx/ (closes: #893679) * Fix my name in Maintainer field * Use secure copyright format uri * Remove X-Python3-Version field * Bump debhelper compat level to 11 searx (0.14.0+dfsg1-2) unstable; urgency=medium * Add "lazy-apps = true" to uwsgi config or otherwise searx searches will timeout. See https://github.com/asciimoo/searx/issues/1210 searx (0.14.0+dfsg1-1) unstable; urgency=medium * New upstream release - settings.yaml can now contain non-ascii characters (closes: #886093) searx (0.13.1+dfsg1-3) unstable; urgency=medium * Add ionicons font to build ion.woff from source using fontforge for the "simple" theme (closes: #882847) searx (0.13.1+dfsg1-2) unstable; urgency=medium * Remove python3-ndg-httpsclient and python3-pyasn1 from Depends of python3-searx. Thanks to Alexandre Flament searx (0.13.1+dfsg1-1) unstable; urgency=medium * New upstream release. (closes: #882400) * also fixes exception when activating image proxy with python3 (closes: #877942) * add debian/gbp.conf * debian/README.source: adjust instructions for debian/gbp.conf * debian/control: bump Standards-Version, no changes required * debian/control: python3-searx is section python * debian/copyright: Add files from the new simple theme to Files-Excluded * debian/copyright: add new contributors for translations * debian/python3-searx.install: also install simple theme * debian/copyright: add copyright for four more files from the simple theme * run wrap-and-sort -asbt searx (0.12.0+dfsg1-1) unstable; urgency=medium * Initial release. (Closes: #808564)
-rw-r--r--debian/README.Debian58
-rw-r--r--debian/README.source17
-rw-r--r--debian/changelog63
-rw-r--r--debian/clean8
-rw-r--r--debian/compat1
-rw-r--r--debian/control72
-rw-r--r--debian/copyright1147
-rw-r--r--debian/examples/nginx/sites-available/searx8
-rw-r--r--debian/examples/uwsgi/apps-available/searx.ini26
-rw-r--r--debian/gbp.conf8
-rw-r--r--debian/ionicons/generate.py133
-rw-r--r--debian/ionicons/generate_less.py69
-rw-r--r--debian/ionicons/input.json37
-rw-r--r--debian/ionicons/svg-orig/alert-circled.svg11
-rw-r--r--debian/ionicons/svg-orig/android-alert.svg12
-rw-r--r--debian/ionicons/svg-orig/android-arrow-dropdown.svg9
-rw-r--r--debian/ionicons/svg-orig/android-globe.svg24
-rw-r--r--debian/ionicons/svg-orig/android-more-vertical.svg9
-rw-r--r--debian/ionicons/svg-orig/android-time.svg15
-rw-r--r--debian/ionicons/svg-orig/arrow-down-a.svg7
-rw-r--r--debian/ionicons/svg-orig/arrow-swap.svg10
-rw-r--r--debian/ionicons/svg-orig/arrow-up-a.svg7
-rw-r--r--debian/ionicons/svg-orig/chevron-left.svg9
-rw-r--r--debian/ionicons/svg-orig/chevron-right.svg9
-rw-r--r--debian/ionicons/svg-orig/chevron-up.svg9
-rw-r--r--debian/ionicons/svg-orig/close-round.svg9
-rw-r--r--debian/ionicons/svg-orig/ios-film-outline.svg9
-rw-r--r--debian/ionicons/svg-orig/ios-telephone.svg12
-rw-r--r--debian/ionicons/svg-orig/link.svg15
-rw-r--r--debian/ionicons/svg-orig/location.svg11
-rw-r--r--debian/ionicons/svg-orig/music-note.svg10
-rw-r--r--debian/ionicons/svg-orig/navicon-round.svg14
-rw-r--r--debian/ionicons/svg-orig/play.svg8
-rw-r--r--debian/ionicons/svg-orig/search.svg10
l---------debian/ionicons/svg-renamed/arrow-down-a.svg1
l---------debian/ionicons/svg-renamed/arrow-dropdown.svg1
l---------debian/ionicons/svg-renamed/arrow-swap.svg1
l---------debian/ionicons/svg-renamed/arrow-up-a.svg1
l---------debian/ionicons/svg-renamed/chevron-left.svg1
l---------debian/ionicons/svg-renamed/chevron-right.svg1
l---------debian/ionicons/svg-renamed/chevron-up.svg1
l---------debian/ionicons/svg-renamed/close.svg1
l---------debian/ionicons/svg-renamed/error.svg1
l---------debian/ionicons/svg-renamed/film-outline.svg1
l---------debian/ionicons/svg-renamed/globe.svg1
l---------debian/ionicons/svg-renamed/link.svg1
l---------debian/ionicons/svg-renamed/location.svg1
l---------debian/ionicons/svg-renamed/more-vertical.svg1
l---------debian/ionicons/svg-renamed/music-note.svg1
l---------debian/ionicons/svg-renamed/navicon-round.svg1
l---------debian/ionicons/svg-renamed/play.svg1
l---------debian/ionicons/svg-renamed/search.svg1
l---------debian/ionicons/svg-renamed/telephone.svg1
l---------debian/ionicons/svg-renamed/time.svg1
l---------debian/ionicons/svg-renamed/warning.svg1
-rw-r--r--debian/patches/debian-changes206
-rw-r--r--debian/patches/series1
-rw-r--r--debian/python3-searx.install22
-rw-r--r--debian/python3-searx.links8
-rw-r--r--debian/python3-searx.lintian-overrides2
-rwxr-xr-xdebian/rules19
-rw-r--r--debian/searx.docs1
-rw-r--r--debian/searx.examples3
-rw-r--r--debian/searx.install1
-rw-r--r--debian/source/format1
-rw-r--r--debian/source/options4
-rw-r--r--debian/source/patch-header16
-rw-r--r--debian/tests/control3
-rw-r--r--debian/tests/general15
-rw-r--r--debian/watch3
70 files changed, 2202 insertions, 0 deletions
diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644
index 0000000..772cda8
--- /dev/null
+++ b/debian/README.Debian
@@ -0,0 +1,58 @@
+Upstream installation guide:
+
+ https://asciimoo.github.io/searx/dev/install/installation.html
+
+The Debian setup varies at some points. Here is the most simple setup that
+starts searx in the foreground without daemonization:
+
+ 1. Copy the default configuration file
+
+ $ mkdir /etc/searx
+ $ gzip --to-stdout --decompress /usr/share/doc/searx/examples/settings.yml.gz > /etc/searx/settings.yml
+
+ 2. Generate a secret key
+
+ $ sed -i -e "s/ultrasecretkey/$(openssl rand -hex 16)/g" /etc/searx/settings.yml
+
+ 3. Start searx
+
+ $ searx-run
+
+ 4. Try it out
+
+ $ sensible-browser 127.0.0.1:8888
+
+It follows a step by step instruction of how to setup searx as a uwsgi service
+behind nginx:
+
+ 1. Copy and symlink the nginx configuration
+
+ $ cp /usr/share/doc/searx/examples/nginx/sites-available/searx /etc/nginx/sites-available
+ $ ln -s ../sites-available/searx /etc/nginx/sites-enabled/searx
+
+ 2. Copy and symlink the uwsgi configuration
+
+ $ cp /usr/share/doc/searx/examples/uwsgi/apps-available/searx.ini /etc/uwsgi/apps-available
+ $ ln -s ../apps-available/searx.ini /etc/uwsgi/apps-enabled/searx.ini
+
+ 3. Copy the default configuration file
+
+ $ mkdir /etc/searx
+ $ gzip --to-stdout --decompress /usr/share/doc/searx/examples/settings.yml.gz > /etc/searx/settings.yml
+
+ 4. Generate a secret key
+
+ $ sed -i -e "s/ultrasecretkey/$(openssl rand -hex 16)/g" /etc/searx/settings.yml
+
+ 5. Restart nginx and uwsgi
+
+ $ systemctl restart nginx
+ $ systemctl restart uwsgi
+
+The differences to the upstream instructions are:
+
+ - the uwsgi user and group are www-data
+ - python3 is used instead of python2
+ - no virtualenv is used
+ - uwsgi pythonpath and chdir are Debian-specific
+ - no root directive is set in nginx configuration
diff --git a/debian/README.source b/debian/README.source
new file mode 100644
index 0000000..136084d
--- /dev/null
+++ b/debian/README.source
@@ -0,0 +1,17 @@
+General
+=======
+
+This package uses the tarball-based variant of the dgit-maint-merge workflow.
+Upstream uses git but distributes files constituting a copyright violation with
+it. Thus, we do not want to ship upstream's git history but instead rely on
+tarballs that were retrieved using uscan and repacked using mk-origtargz and
+the Files-Excluded field from debian/copright.
+
+New upstream release
+====================
+
+To import a new upstream version, use:
+
+ $ gbp import-orig --uscan
+
+gbp options specific to dgit will be read from debian/gbp.conf
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..ad002e6
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,63 @@
+searx (0.15.0+dfsg1-1) unstable; urgency=medium
+
+ * New upstream release
+ * Use require.min.js from libjs-requirejs and not from nodejs-requirejs
+ (closes: #901738)
+ * Update Homepage field to https://asciimoo.github.io/searx/ (closes: #893679)
+ * Fix my name in Maintainer field
+ * Use secure copyright format uri
+ * Remove X-Python3-Version field
+ * Bump debhelper compat level to 11
+
+ -- Johannes 'josch' Schauer <josch@debian.org> Sun, 06 Jan 2019 23:54:27 +0100
+
+searx (0.14.0+dfsg1-2) unstable; urgency=medium
+
+ * Add "lazy-apps = true" to uwsgi config or otherwise searx searches will
+ timeout. See https://github.com/asciimoo/searx/issues/1210
+
+ -- Johannes Schauer <josch@debian.org> Fri, 23 Feb 2018 22:20:01 +0100
+
+searx (0.14.0+dfsg1-1) unstable; urgency=medium
+
+ * New upstream release
+ - settings.yaml can now contain non-ascii characters (closes: #886093)
+
+ -- Johannes Schauer <josch@debian.org> Tue, 20 Feb 2018 13:45:35 +0100
+
+searx (0.13.1+dfsg1-3) unstable; urgency=medium
+
+ * Add ionicons font to build ion.woff from source using fontforge for the
+ "simple" theme (closes: #882847)
+
+ -- Johannes Schauer <josch@debian.org> Thu, 30 Nov 2017 00:49:13 +0100
+
+searx (0.13.1+dfsg1-2) unstable; urgency=medium
+
+ * Remove python3-ndg-httpsclient and python3-pyasn1 from Depends of
+ python3-searx. Thanks to Alexandre Flament
+
+ -- Johannes Schauer <josch@debian.org> Mon, 27 Nov 2017 12:25:20 +0100
+
+searx (0.13.1+dfsg1-1) unstable; urgency=medium
+
+ * New upstream release. (closes: #882400)
+ * also fixes exception when activating image proxy
+ with python3 (closes: #877942)
+ * add debian/gbp.conf
+ * debian/README.source: adjust instructions for debian/gbp.conf
+ * debian/control: bump Standards-Version, no changes required
+ * debian/control: python3-searx is section python
+ * debian/copyright: Add files from the new simple theme to Files-Excluded
+ * debian/copyright: add new contributors for translations
+ * debian/python3-searx.install: also install simple theme
+ * debian/copyright: add copyright for four more files from the simple theme
+ * run wrap-and-sort -asbt
+
+ -- Johannes Schauer <josch@debian.org> Fri, 24 Nov 2017 11:06:41 +0100
+
+searx (0.12.0+dfsg1-1) unstable; urgency=medium
+
+ * Initial release. (Closes: #808564)
+
+ -- Johannes Schauer <josch@debian.org> Fri, 16 Jun 2017 12:16:41 +0200
diff --git a/debian/clean b/debian/clean
new file mode 100644
index 0000000..436e84d
--- /dev/null
+++ b/debian/clean
@@ -0,0 +1,8 @@
+searx/translations/*/LC_MESSAGES/messages.mo
+searx.egg-info/
+searx/static/themes/courgette/css/
+searx/static/themes/legacy/css/
+searx/static/themes/oscar/css/
+searx/static/themes/oscar/js/searx.js
+searx/static/themes/oscar/js/searx.min.js
+searx/static/themes/pix-art/css/
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..b4de394
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+11
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..78533c2
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,72 @@
+Source: searx
+Section: web
+Priority: optional
+Maintainer: Johannes 'josch' Schauer <josch@debian.org>
+Build-depends:
+ debhelper (>= 11),
+ dh-python,
+ grunt,
+ node-grunt-contrib-concat,
+ node-grunt-contrib-uglify,
+ node-less,
+ python3-all,
+ python3-babel,
+ python3-setuptools,
+ python,
+ python-fontforge,
+Standards-Version: 4.1.1
+Homepage: https://asciimoo.github.io/searx/
+Vcs-Git: https://git.dgit.debian.org/searx
+Vcs-Browser: https://browse.dgit.debian.org/searx.git/
+
+Package: python3-searx
+Architecture: all
+Depends:
+ libjs-bootstrap,
+ libjs-jquery,
+ libjs-leaflet,
+ libjs-requirejs,
+ python3-certifi,
+ python3-dateutil,
+ python3-flask,
+ python3-flask-babel,
+ python3-lxml,
+ python3-openssl,
+ python3-pygments,
+ python3-requests,
+ python3-werkzeug,
+ python3-yaml,
+ ${misc:Depends},
+ ${python3:Depends},
+Section: python
+Description: Privacy-respecting metasearch engine - library package
+ Searx is an internet metasearch engine which aggregates results from more than
+ 70 search services. Searx runs as a web service and provides a web interface
+ that allows the user to do a general search (aggregating results from google,
+ bing, yahoo) or search for files (piratebay, kickass, torrentz), images (bing,
+ deviantart, google images, flickr), IT (github, stackoverflow, Arch Linux
+ wiki), maps (OpenStreetMap, photon), music (youtube, spotify, soundcloud),
+ news (bing news, google news, reddit), science (arxiv, wolframalpha) social
+ media (digg, twitter) and videos (youtube, dailymotion, vimeo).
+ .
+ This package provides the Python library.
+
+Package: searx
+Architecture: all
+Depends:
+ python3-searx (= ${source:Version}),
+ ${misc:Depends},
+ ${python3:Depends},
+Suggests:
+ nginx,
+ uwsgi,
+ uwsgi-plugin-python3,
+Description: Privacy-respecting metasearch engine
+ Searx is an internet metasearch engine which aggregates results from more than
+ 70 search services. Searx runs as a web service and provides a web interface
+ that allows the user to do a general search (aggregating results from google,
+ bing, yahoo) or search for files (piratebay, kickass, torrentz), images (bing,
+ deviantart, google images, flickr), IT (github, stackoverflow, Arch Linux
+ wiki), maps (OpenStreetMap, photon), music (youtube, spotify, soundcloud),
+ news (bing news, google news, reddit), science (arxiv, wolframalpha) social
+ media (digg, twitter) and videos (youtube, dailymotion, vimeo).
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..e364abc
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,1147 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: searx
+Upstream-Contact: https://github.com/asciimoo/searx/issues
+Source: https://github.com/asciimoo/searx
+Comment:
+ See https://github.com/asciimoo/searx/issues/1091 for a detailed analysis
+ of the copyright status of the simple theme
+ .
+ A more general copyright-related upstream issue is:
+ https://github.com/asciimoo/searx/issues/814
+Files-Excluded:
+ searx/static/css
+ searx/static/fonts
+ searx/static/js
+ searx/static/less
+ searx/static/themes/*/img/github_ribbon.png
+ searx/static/themes/*/img/icons/*.ico
+ searx/static/themes/*/img/icons/*.png
+ searx/static/themes/courgette/css
+ searx/static/themes/courgette/img/bg-body-index.jpg
+ searx/static/themes/legacy/css
+ searx/static/themes/oscar/css
+ searx/static/themes/oscar/css
+ searx/static/themes/oscar/js/leaflet-0.7.3.min.js
+ searx/static/themes/oscar/js/searx.min.js
+ searx/static/themes/oscar/img/icons/README.md
+ searx/static/themes/pix-art/css/style.css
+ searx/static/themes/simple/css
+ searx/static/themes/simple/fonts
+ searx/static/themes/simple/js/searx.js
+ searx/static/themes/simple/js/searx.min.js
+ searx/static/themes/simple/js/searx.min.js.map
+ searx/static/themes/simple/leaflet
+ searx/static/themes/simple/less/ion.less
+ searx/translations/*/LC_MESSAGES/messages.mo
+
+Files: *
+Copyright:
+ 2013-2017 Adam Tauber <asciimoo@gmail.com>
+ 2016 Alexandre Flament <alex@al-f.net>
+ 2014-2015 Cqoicebordel <Cqoicebordel@users.noreply.github.com>
+ 2014 Thomas Pointhuber <thomas.pointhuber@gmx.at>
+License: AGPL-3+
+
+Files: searx/translations/*
+Copyright:
+ 2017 ButterflyOfFire
+ 2017 jugi1
+ 2017 asladic <ales.sladic@gmail.com>
+ 2017 Dino Dugandžija <ddugandz@tutanota.com>
+ 2017 Morten Krogh Andersen <spam1@krogh.net>
+ 2014-2015 Adam Tauber <asciimoo@gmail.com>
+ 2015 adrian.fita <adrian.fita@gmail.com>
+ 2016 Akio Nishimura <akionux@gmail.com>
+ 2014-2016 Alejandro León Aznar, 2014
+ 2017 Alexandre Flament <alex@al-f.net>
+ 2014-2017 André Koot <meneer@tken.net>
+ 2014 Benjamin Sonntag <benjamin@sonntag.fr>
+ 2014-20116 Caner Başaran <basaran.caner@protonmail.com>
+ 2016 caoswave
+ 2016 Carmen Fernández B.
+ 2017 Clon <fillip1@seznam.cz>
+ 2014 Cqoicebordel <david.barouh@wanadoo.fr>
+ 2014-2016 Cqoicebordel <david.barouh@wanadoo.fr>
+ 2015 Dimitris T. <dimitris@stinpriza.org>
+ 2015 dimqua <dimqua@riseup.net>
+ 2014 dp <d.pitrolo@gmx.com>
+ 2016 Ettore Atalan <atalanttore@googlemail.com>
+ 2015-2016 GenghisKhan <genghiskhan@gmx.ca>
+ 2016 Jona Abdinghoff <jona.abdinghoff@gmail.com>
+ 2016 Jonatan Nyberg <jonatan@autistici.org>
+ 2015-2016 juanda097 <juanda097@openmailbox.org>
+ 2015 Lucas Phillips <mail@lep.pw>
+ 2015 Luc <luc.absil2@gmail.com>
+ 2016 marc
+ 2015 Max <theshirinzu@gmail.com>
+ 2015-2016 Nathan Follens
+ 2015 Neton Brício <fervelinux@gmail.com>
+ 2016 Noémi Ványi <sitbackandwait@gmail.com>
+ 2015 Oscar Carrero <ocf@openmailbox.org>
+ 2016 pizzaiolo
+ 2014 pointhi
+ 2016 Rejo Zenger <rejo@zenger.nl>
+ 2014 rike
+ 2016 rivera valdez <riveravaldezmail@gmail.com>
+ 2014 stf <stefan.marsiske@gmail.com>
+ 2014-2017 Thomas Pointhuber
+ 2015-2017 ubone <van_ds_ff@mail.bg>, 2015
+ 2016 wefwefew ewfewfewf <nnnedmz0d@moakt.ws>
+ 2015-2016 wenke
+ 2016 Дмитрий Михирев <bizdelnick@gmail.com>
+License: AGPL-3+
+
+Files:
+ searx/static/themes/simple/magnet.svg
+Comment: https://thenounproject.com/term/magnet/5022/
+Copyright: Dmitry Baranovskiy from thenounproject.com
+License: CC-BY-3.0
+
+Files:
+ searx/static/themes/simple/less/autocomplete.less
+ searx/static/themes/simple/js/searx_src/autocomplete.js
+Copyright: 2017 Baptiste Donaux
+License: MIT
+
+Files: searx/static/themes/simple/less/normalize.less
+Copyright: Nicolas Gallagher and Jonathan Neal
+License: MIT
+
+Files: searx/static/themes/simple/js/searx_src/searx_imageresult.js
+Copyright: Anh Trinh
+License: MIT
+
+Files: debian/*
+Copyright: 2017 Johannes Schauer <josch@debian.org>
+License: Expat
+ 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.
+
+Files: debian/ionicons/svg-orig/*
+Copyright: Benjamin J Sperry
+Comment: https://github.com/ionic-team/ionicons/tree/master/src
+License: MIT
+
+Files: debian/ionicons/generate.py
+Copyright:
+ kaizau
+ Joshua Gross <josh@planetary.io>
+ Yifei Zhang
+ Artem Sapegin
+License: MIT
+
+License: MIT
+ 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.
+
+License: AGPL-3+
+ searx 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.
+ .
+ searx 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.
+ .
+ GNU AFFERO GENERAL PUBLIC LICENSE
+ Version 3, 19 November 2007
+ .
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies of this
+ license document, but changing it is not allowed.
+ .
+ Preamble
+ .
+ The GNU Affero General Public License is a free, copyleft license for
+ software and other kinds of works, specifically designed to ensure
+ cooperation with the community in the case of network server software.
+ .
+ The licenses for most software and other practical works are designed
+ to take away your freedom to share and change the works. By contrast,
+ our General Public Licenses are intended to guarantee your freedom to
+ share and change all versions of a program--to make sure it remains
+ free software for all its users.
+ .
+ When we speak of free software, we are referring to freedom, not price.
+ Our General Public Licenses are designed to make sure that you have the
+ freedom to distribute copies of free software (and charge for them if
+ you wish), that you receive source code or can get it if you want it,
+ that you can change the software or use pieces of it in new free
+ programs, and that you know you can do these things.
+ .
+ Developers that use our General Public Licenses protect your rights
+ with two steps: (1) assert copyright on the software, and (2) offer you
+ this License which gives you legal permission to copy, distribute
+ and/or modify the software.
+ .
+ A secondary benefit of defending all users' freedom is that
+ improvements made in alternate versions of the program, if they receive
+ widespread use, become available for other developers to incorporate.
+ Many developers of free software are heartened and encouraged by the
+ resulting cooperation. However, in the case of software used on
+ network servers, this result may fail to come about. The GNU General
+ Public License permits making a modified version and letting the public
+ access it on a server without ever releasing its source code to the
+ public.
+ .
+ The GNU Affero General Public License is designed specifically to
+ ensure that, in such cases, the modified source code becomes available
+ to the community. It requires the operator of a network server to
+ provide the source code of the modified version running there to the
+ users of that server. Therefore, public use of a modified version, on
+ a publicly accessible server, gives the public access to the source
+ code of the modified version.
+ .
+ An older license, called the Affero General Public License and
+ published by Affero, was designed to accomplish similar goals. This is
+ a different license, not a version of the Affero GPL, but Affero has
+ released a new version of the Affero GPL which permits relicensing
+ under this license.
+ .
+ The precise terms and conditions for copying, distribution and
+ modification follow.
+ .
+ TERMS AND CONDITIONS
+ .
+ 0. Definitions.
+ .
+ "This License" refers to version 3 of the GNU Affero General Public
+ License.
+ .
+ "Copyright" also means copyright-like laws that apply to other kinds of
+ works, such as semiconductor masks.
+ .
+ "The Program" refers to any copyrightable work licensed under this
+ License. Each licensee is addressed as "you". "Licensees" and
+ "recipients" may be individuals or organizations.
+ .
+ To "modify" a work means to copy from or adapt all or part of the work
+ in a fashion requiring copyright permission, other than the making of
+ an exact copy. The resulting work is called a "modified version" of
+ the earlier work or a work "based on" the earlier work.
+ .
+ A "covered work" means either the unmodified Program or a work based on
+ the Program.
+ .
+ To "propagate" a work means to do anything with it that, without
+ permission, would make you directly or secondarily liable for
+ infringement under applicable copyright law, except executing it on a
+ computer or modifying a private copy. Propagation includes copying,
+ distribution (with or without modification), making available to the
+ public, and in some countries other activities as well.
+ .
+ To "convey" a work means any kind of propagation that enables other
+ parties to make or receive copies. Mere interaction with a user
+ through a computer network, with no transfer of a copy, is not
+ conveying.
+ .
+ An interactive user interface displays "Appropriate Legal Notices" to
+ the extent that it includes a convenient and prominently visible
+ feature that (1) displays an appropriate copyright notice, and (2)
+ tells the user that there is no warranty for the work (except to the
+ extent that warranties are provided), that licensees may convey the
+ work under this License, and how to view a copy of this License. If the
+ interface presents a list of user commands or options, such as a menu,
+ a prominent item in the list meets this criterion.
+ .
+ 1. Source Code.
+ .
+ The "source code" for a work means the preferred form of the work for
+ making modifications to it. "Object code" means any non-source form of
+ a work.
+ .
+ A "Standard Interface" means an interface that either is an official
+ standard defined by a recognized standards body, or, in the case of
+ interfaces specified for a particular programming language, one that is
+ widely used among developers working in that language.
+ .
+ The "System Libraries" of an executable work include anything, other
+ than the work as a whole, that (a) is included in the normal form of
+ packaging a Major Component, but which is not part of that Major
+ Component, and (b) serves only to enable use of the work with that
+ Major Component, or to implement a Standard Interface for which an
+ implementation is available to the public in source code form. A "Major
+ Component", in this context, means a major essential component (kernel,
+ window system, and so on) of the specific operating system (if any) on
+ which the executable work runs, or a compiler used to produce the work,
+ or an object code interpreter used to run it.
+ .
+ The "Corresponding Source" for a work in object code form means all the
+ source code needed to generate, install, and (for an executable work)
+ run the object code and to modify the work, including scripts to
+ control those activities. However, it does not include the work's
+ System Libraries, or general-purpose tools or generally available free
+ programs which are used unmodified in performing those activities but
+ which are not part of the work. For example, Corresponding Source
+ includes interface definition files associated with source files for
+ the work, and the source code for shared libraries and dynamically
+ linked subprograms that the work is specifically designed to require,
+ such as by intimate data communication or control flow between those
+ subprograms and other parts of the work.
+ .
+ The Corresponding Source need not include anything that users can
+ regenerate automatically from other parts of the Corresponding Source.
+ .
+ The Corresponding Source for a work in source code form is that same
+ work.
+ .
+ 2. Basic Permissions.
+ .
+ All rights granted under this License are granted for the term of
+ copyright on the Program, and are irrevocable provided the stated
+ conditions are met. This License explicitly affirms your unlimited
+ permission to run the unmodified Program. The output from running a
+ covered work is covered by this License only if the output, given its
+ content, constitutes a covered work. This License acknowledges your
+ rights of fair use or other equivalent, as provided by copyright law.
+ .
+ You may make, run and propagate covered works that you do not convey,
+ without conditions so long as your license otherwise remains in force.
+ You may convey covered works to others for the sole purpose of having
+ them make modifications exclusively for you, or provide you with
+ facilities for running those works, provided that you comply with the
+ terms of this License in conveying all material for which you do not
+ control copyright. Those thus making or running the covered works for
+ you must do so exclusively on your behalf, under your direction and
+ control, on terms that prohibit them from making any copies of your
+ copyrighted material outside their relationship with you.
+ .
+ Conveying under any other circumstances is permitted solely under the
+ conditions stated below. Sublicensing is not allowed; section 10 makes
+ it unnecessary.
+ .
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+ .
+ No covered work shall be deemed part of an effective technological
+ measure under any applicable law fulfilling obligations under article
+ 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar
+ laws prohibiting or restricting circumvention of such measures.
+ .
+ When you convey a covered work, you waive any legal power to forbid
+ circumvention of technological measures to the extent such
+ circumvention is effected by exercising rights under this License with
+ respect to the covered work, and you disclaim any intention to limit
+ operation or modification of the work as a means of enforcing, against
+ the work's users, your or third parties' legal rights to forbid
+ circumvention of technological measures.
+ .
+ 4. Conveying Verbatim Copies.
+ .
+ You may convey verbatim copies of the Program's source code as you
+ receive it, in any medium, provided that you conspicuously and
+ appropriately publish on each copy an appropriate copyright notice;
+ keep intact all notices stating that this License and any
+ non-permissive terms added in accord with section 7 apply to the code;
+ keep intact all notices of the absence of any warranty; and give all
+ recipients a copy of this License along with the Program.
+ .
+ You may charge any price or no price for each copy that you convey, and
+ you may offer support or warranty protection for a fee.
+ .
+ 5. Conveying Modified Source Versions.
+ .
+ You may convey a work based on the Program, or the modifications to
+ produce it from the Program, in the form of source code under the terms
+ of section 4, provided that you also meet all of these conditions:
+ .
+ a) The work must carry prominent notices stating that you modified it,
+ and giving a relevant date.
+ .
+ b) The work must carry prominent notices stating that it is released
+ under this License and any conditions added under section 7. This
+ requirement modifies the requirement in section 4 to "keep intact all
+ notices".
+ .
+ c) You must license the entire work, as a whole, under this License to
+ anyone who comes into possession of a copy. This License will
+ therefore apply, along with any applicable section 7 additional terms,
+ to the whole of the work, and all its parts, regardless of how they are
+ packaged. This License gives no permission to license the work in any
+ other way, but it does not invalidate such permission if you have
+ separately received it.
+ .
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your work
+ need not make them do so.
+ .
+ A compilation of a covered work with other separate and independent
+ works, which are not by their nature extensions of the covered work,
+ and which are not combined with it such as to form a larger program, in
+ or on a volume of a storage or distribution medium, is called an
+ "aggregate" if the compilation and its resulting copyright are not used
+ to limit the access or legal rights of the compilation's users beyond
+ what the individual works permit. Inclusion of a covered work in an
+ aggregate does not cause this License to apply to the other parts of
+ the aggregate.
+ .
+ 6. Conveying Non-Source Forms.
+ .
+ You may convey a covered work in object code form under the terms of
+ sections 4 and 5, provided that you also convey the machine-readable
+ Corresponding Source under the terms of this License, in one of these
+ ways:
+ .
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium customarily
+ used for software interchange.
+ .
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a written
+ offer, valid for at least three years and valid for as long as you
+ offer spare parts or customer support for that product model, to give
+ anyone who possesses the object code either (1) a copy of the
+ Corresponding Source for all the software in the product that is
+ covered by this License, on a durable physical medium customarily used
+ for software interchange, for a price no more than your reasonable cost
+ of physically performing this conveying of source, or (2) access to
+ copy the Corresponding Source from a network server at no charge.
+ .
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This alternative is
+ allowed only occasionally and noncommercially, and only if you received
+ the object code with such an offer, in accord with subsection 6b.
+ .
+ d) Convey the object code by offering access from a designated place
+ (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to copy
+ the object code is a network server, the Corresponding Source may be on
+ a different server (operated by you or a third party) that supports
+ equivalent copying facilities, provided you maintain clear directions
+ next to the object code saying where to find the Corresponding Source.
+ Regardless of what server hosts the Corresponding Source, you remain
+ obligated to ensure that it is available for as long as needed to
+ satisfy these requirements.
+ .
+ e) Convey the object code using peer-to-peer transmission, provided you
+ inform other peers where the object code and Corresponding Source of
+ the work are being offered to the general public at no charge under
+ subsection 6d.
+ .
+ A separable portion of the object code, whose source code is excluded
+ from the Corresponding Source as a System Library, need not be included
+ in conveying the object code work.
+ .
+ A "User Product" is either (1) a "consumer product", which means any
+ tangible personal property which is normally used for personal, family,
+ or household purposes, or (2) anything designed or sold for
+ incorporation into a dwelling. In determining whether a product is a
+ consumer product, doubtful cases shall be resolved in favor of
+ coverage. For a particular product received by a particular user,
+ "normally used" refers to a typical or common use of that class of
+ product, regardless of the status of the particular user or of the way
+ in which the particular user actually uses, or expects or is expected
+ to use, the product. A product is a consumer product regardless of
+ whether the product has substantial commercial, industrial or
+ non-consumer uses, unless such uses represent the only significant mode
+ of use of the product.
+ .
+ "Installation Information" for a User Product means any methods,
+ procedures, authorization keys, or other information required to
+ install and execute modified versions of a covered work in that User
+ Product from a modified version of its Corresponding Source. The
+ information must suffice to ensure that the continued functioning of
+ the modified object code is in no case prevented or interfered with
+ solely because modification has been made.
+ .
+ If you convey an object code work under this section in, or with, or
+ specifically for use in, a User Product, and the conveying occurs as
+ part of a transaction in which the right of possession and use of the
+ User Product is transferred to the recipient in perpetuity or for a
+ fixed term (regardless of how the transaction is characterized), the
+ Corresponding Source conveyed under this section must be accompanied by
+ the Installation Information. But this requirement does not apply if
+ neither you nor any third party retains the ability to install modified
+ object code on the User Product (for example, the work has been
+ installed in ROM).
+ .
+ The requirement to provide Installation Information does not include a
+ requirement to continue to provide support service, warranty, or
+ updates for a work that has been modified or installed by the
+ recipient, or for the User Product in which it has been modified or
+ installed. Access to a network may be denied when the modification
+ itself materially and adversely affects the operation of the network or
+ violates the rules and protocols for communication across the network.
+ .
+ Corresponding Source conveyed, and Installation Information provided,
+ in accord with this section must be in a format that is publicly
+ documented (and with an implementation available to the public in
+ source code form), and must require no special password or key for
+ unpacking, reading or copying.
+ .
+ 7. Additional Terms.
+ .
+ "Additional permissions" are terms that supplement the terms of this
+ License by making exceptions from one or more of its conditions.
+ Additional permissions that are applicable to the entire Program shall
+ be treated as though they were included in this License, to the extent
+ that they are valid under applicable law. If additional permissions
+ apply only to part of the Program, that part may be used separately
+ under those permissions, but the entire Program remains governed by
+ this License without regard to the additional permissions.
+ .
+ When you convey a copy of a covered work, you may at your option remove
+ any additional permissions from that copy, or from any part of it.
+ (Additional permissions may be written to require their own removal in
+ certain cases when you modify the work.) You may place additional
+ permissions on material, added by you to a covered work, for which you
+ have or can give appropriate copyright permission.
+ .
+ Notwithstanding any other provision of this License, for material you
+ add to a covered work, you may (if authorized by the copyright holders
+ of that material) supplement the terms of this License with terms:
+ .
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+ .
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+ .
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+ .
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+ .
+ e) Declining to grant rights under trademark law for use of some trade
+ names, trademarks, or service marks; or
+ .
+ f) Requiring indemnification of licensors and authors of that material
+ by anyone who conveys the material (or modified versions of it) with
+ contractual assumptions of liability to the recipient, for any
+ liability that these contractual assumptions directly impose on those
+ licensors and authors.
+ .
+ All other non-permissive additional terms are considered "further
+ restrictions" within the meaning of section 10. If the Program as you
+ received it, or any part of it, contains a notice stating that it is
+ governed by this License along with a term that is a further
+ restriction, you may remove that term. If a license document contains
+ a further restriction but permits relicensing or conveying under this
+ License, you may add to a covered work material governed by the terms
+ of that license document, provided that the further restriction does
+ not survive such relicensing or conveying.
+ .
+ If you add terms to a covered work in accord with this section, you
+ must place, in the relevant source files, a statement of the additional
+ terms that apply to those files, or a notice indicating where to find
+ the applicable terms.
+ .
+ Additional terms, permissive or non-permissive, may be stated in the
+ form of a separately written license, or stated as exceptions; the
+ above requirements apply either way.
+ .
+ 8. Termination.
+ .
+ You may not propagate or modify a covered work except as expressly
+ provided under this License. Any attempt otherwise to propagate or
+ modify it is void, and will automatically terminate your rights under
+ this License (including any patent licenses granted under the third
+ paragraph of section 11).
+ .
+ However, if you cease all violation of this License, then your license
+ from a particular copyright holder is reinstated (a) provisionally,
+ unless and until the copyright holder explicitly and finally terminates
+ your license, and (b) permanently, if the copyright holder fails to
+ notify you of the violation by some reasonable means prior to 60 days
+ after the cessation.
+ .
+ Moreover, your license from a particular copyright holder is reinstated
+ permanently if the copyright holder notifies you of the violation by
+ some reasonable means, this is the first time you have received notice
+ of violation of this License (for any work) from that copyright holder,
+ and you cure the violation prior to 30 days after your receipt of the
+ notice.
+ .
+ Termination of your rights under this section does not terminate the
+ licenses of parties who have received copies or rights from you under
+ this License. If your rights have been terminated and not permanently
+ reinstated, you do not qualify to receive new licenses for the same
+ material under section 10.
+ .
+ 9. Acceptance Not Required for Having Copies.
+ .
+ You are not required to accept this License in order to receive or run
+ a copy of the Program. Ancillary propagation of a covered work
+ occurring solely as a consequence of using peer-to-peer transmission to
+ receive a copy likewise does not require acceptance. However, nothing
+ other than this License grants you permission to propagate or modify
+ any covered work. These actions infringe copyright if you do not
+ accept this License. Therefore, by modifying or propagating a covered
+ work, you indicate your acceptance of this License to do so.
+ .
+ 10. Automatic Licensing of Downstream Recipients.
+ .
+ Each time you convey a covered work, the recipient automatically
+ receives a license from the original licensors, to run, modify and
+ propagate that work, subject to this License. You are not responsible
+ for enforcing compliance by third parties with this License.
+ .
+ An "entity transaction" is a transaction transferring control of an
+ organization, or substantially all assets of one, or subdividing an
+ organization, or merging organizations. If propagation of a covered
+ work results from an entity transaction, each party to that transaction
+ who receives a copy of the work also receives whatever licenses to the
+ work the party's predecessor in interest had or could give under the
+ previous paragraph, plus a right to possession of the Corresponding
+ Source of the work from the predecessor in interest, if the predecessor
+ has it or can get it with reasonable efforts.
+ .
+ You may not impose any further restrictions on the exercise of the
+ rights granted or affirmed under this License. For example, you may
+ not impose a license fee, royalty, or other charge for exercise of
+ rights granted under this License, and you may not initiate litigation
+ (including a cross-claim or counterclaim in a lawsuit) alleging that
+ any patent claim is infringed by making, using, selling, offering for
+ sale, or importing the Program or any portion of it.
+ .
+ 11. Patents.
+ .
+ A "contributor" is a copyright holder who authorizes use under this
+ License of the Program or a work on which the Program is based. The
+ work thus licensed is called the contributor's "contributor version".
+ .
+ A contributor's "essential patent claims" are all patent claims owned
+ or controlled by the contributor, whether already acquired or hereafter
+ acquired, that would be infringed by some manner, permitted by this
+ License, of making, using, or selling its contributor version, but do
+ not include claims that would be infringed only as a consequence of
+ further modification of the contributor version. For purposes of this
+ definition, "control" includes the right to grant patent sublicenses in
+ a manner consistent with the requirements of this License.
+ .
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+ patent license under the contributor's essential patent claims, to
+ make, use, sell, offer for sale, import and otherwise run, modify and
+ propagate the contents of its contributor version.
+ .
+ In the following three paragraphs, a "patent license" is any express
+ agreement or commitment, however denominated, not to enforce a patent
+ (such as an express permission to practice a patent or covenant not to
+ sue for patent infringement). To "grant" such a patent license to a
+ party means to make such an agreement or commitment not to enforce a
+ patent against the party.
+ .
+ If you convey a covered work, knowingly relying on a patent license,
+ and the Corresponding Source of the work is not available for anyone to
+ copy, free of charge and under the terms of this License, through a
+ publicly available network server or other readily accessible means,
+ then you must either (1) cause the Corresponding Source to be so
+ available, or (2) arrange to deprive yourself of the benefit of the
+ patent license for this particular work, or (3) arrange, in a manner
+ consistent with the requirements of this License, to extend the patent
+ license to downstream recipients. "Knowingly relying" means you have
+ actual knowledge that, but for the patent license, your conveying the
+ covered work in a country, or your recipient's use of the covered work
+ in a country, would infringe one or more identifiable patents in that
+ country that you have reason to believe are valid.
+ .
+ If, pursuant to or in connection with a single transaction or
+ arrangement, you convey, or propagate by procuring conveyance of, a
+ covered work, and grant a patent license to some of the parties
+ receiving the covered work authorizing them to use, propagate, modify
+ or convey a specific copy of the covered work, then the patent license
+ you grant is automatically extended to all recipients of the covered
+ work and works based on it.
+ .
+ A patent license is "discriminatory" if it does not include within the
+ scope of its coverage, prohibits the exercise of, or is conditioned on
+ the non-exercise of one or more of the rights that are specifically
+ granted under this License. You may not convey a covered work if you
+ are a party to an arrangement with a third party that is in the
+ business of distributing software, under which you make payment to the
+ third party based on the extent of your activity of conveying the work,
+ and under which the third party grants, to any of the parties who would
+ receive the covered work from you, a discriminatory patent license (a)
+ in connection with copies of the covered work conveyed by you (or
+ copies made from those copies), or (b) primarily for and in connection
+ with specific products or compilations that contain the covered work,
+ unless you entered into that arrangement, or that patent license was
+ granted, prior to 28 March 2007.
+ .
+ Nothing in this License shall be construed as excluding or limiting any
+ implied license or other defenses to infringement that may otherwise be
+ available to you under applicable patent law.
+ .
+ 12. No Surrender of Others' Freedom.
+ .
+ If conditions are imposed on you (whether by court order, agreement or
+ otherwise) that contradict the conditions of this License, they do not
+ excuse you from the conditions of this License. If you cannot convey a
+ covered work so as to satisfy simultaneously your obligations under
+ this License and any other pertinent obligations, then as a consequence
+ you may not convey it at all. For example, if you agree to terms that
+ obligate you to collect a royalty for further conveying from those to
+ whom you convey the Program, the only way you could satisfy both those
+ terms and this License would be to refrain entirely from conveying the
+ Program.
+ .
+ 13. Remote Network Interaction; Use with the GNU General Public
+ License.
+ .
+ Notwithstanding any other provision of this License, if you modify the
+ Program, your modified version must prominently offer all users
+ interacting with it remotely through a computer network (if your
+ version supports such interaction) an opportunity to receive the
+ Corresponding Source of your version by providing access to the
+ Corresponding Source from a network server at no charge, through some
+ standard or customary means of facilitating copying of software. This
+ Corresponding Source shall include the Corresponding Source for any
+ work covered by version 3 of the GNU General Public License that is
+ incorporated pursuant to the following paragraph.
+ .
+ Notwithstanding any other provision of this License, you have
+ permission to link or combine any covered work with a work licensed
+ under version 3 of the GNU General Public License into a single
+ combined work, and to convey the resulting work. The terms of this
+ License will continue to apply to the part which is the covered work,
+ but the work with which it is combined will remain governed by version
+ 3 of the GNU General Public License.
+ .
+ 14. Revised Versions of this License.
+ .
+ The Free Software Foundation may publish revised and/or new versions of
+ the GNU Affero General Public License from time to time. Such new
+ versions will be similar in spirit to the present version, but may
+ differ in detail to address new problems or concerns.
+ .
+ Each version is given a distinguishing version number. If the Program
+ specifies that a certain numbered version of the GNU Affero General
+ Public License "or any later version" applies to it, you have the
+ option of following the terms and conditions either of that numbered
+ version or of any later version published by the Free Software
+ Foundation. If the Program does not specify a version number of the
+ GNU Affero General Public License, you may choose any version ever
+ published by the Free Software Foundation.
+ .
+ If the Program specifies that a proxy can decide which future versions
+ of the GNU Affero General Public License can be used, that proxy's
+ public statement of acceptance of a version permanently authorizes you
+ to choose that version for the Program.
+ .
+ Later license versions may give you additional or different
+ permissions. However, no additional obligations are imposed on any
+ author or copyright holder as a result of your choosing to follow a
+ later version.
+ .
+ 15. Disclaimer of Warranty.
+ .
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+ APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+ HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
+ WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE
+ OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU
+ ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+ .
+ 16. Limitation of Liability.
+ .
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
+ CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+ INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
+ ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT
+ NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES
+ SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO
+ OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY
+ HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ .
+ 17. Interpretation of Sections 15 and 16.
+ .
+ If the disclaimer of warranty and limitation of liability provided
+ above cannot be given local legal effect according to their terms,
+ reviewing courts shall apply local law that most closely approximates
+ an absolute waiver of all civil liability in connection with the
+ Program, unless a warranty or assumption of liability accompanies a
+ copy of the Program in return for a fee.
+ .
+ END OF TERMS AND CONDITIONS
+ .
+ How to Apply These Terms to Your New Programs
+ .
+ If you develop a new program, and you want it to be of the greatest
+ possible use to the public, the best way to achieve this is to make it
+ free software which everyone can redistribute and change under these
+ terms.
+ .
+ To do so, attach the following notices to the program. It is safest to
+ attach them to the start of each source file to most effectively state
+ the exclusion of warranty; and each file should have at least the
+ "copyright" line and a pointer to where the full notice is found.
+ .
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+ .
+ This program 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.
+ .
+ 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
+ Affero General Public License for more details.
+ .
+ You should have received a copy of the GNU Affero General Public
+ License along with this program. If not, see
+ <http://www.gnu.org/licenses/>.
+ .
+ Also add information on how to contact you by electronic and paper
+ mail.
+ .
+ If your software can interact with users remotely through a computer
+ network, you should also make sure that it provides a way for users to
+ get its source. For example, if your program is a web application, its
+ interface could display a "Source" link that leads users to an archive
+ of the code. There are many ways you could offer source, and different
+ solutions will be better for different programs; see section 13 for the
+ specific requirements.
+ .
+ You should also get your employer (if you work as a programmer) or
+ school, if any, to sign a "copyright disclaimer" for the program, if
+ necessary. For more information on this, and how to apply and follow
+ the GNU AGPL, see <http://www.gnu.org/licenses/>.
+
+License: CC-BY-3.0
+ Creative Commons Legal Code
+ .
+ Attribution 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 above) for the purposes of this
+ License.
+ c. "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.
+ d. "Licensor" means the individual, individuals, entity or entities that
+ offer(s) the Work under the terms of this License.
+ e. "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.
+ f. "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.
+ g. "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.
+ h. "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.
+ i. "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(b), 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(b), as requested.
+ b. 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 Section 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 (b) 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.
+ c. 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 this License.
+ .
+ Creative Commons may be contacted at https://creativecommons.org/.
diff --git a/debian/examples/nginx/sites-available/searx b/debian/examples/nginx/sites-available/searx
new file mode 100644
index 0000000..0f95574
--- /dev/null
+++ b/debian/examples/nginx/sites-available/searx
@@ -0,0 +1,8 @@
+server {
+ listen 80;
+ server_name FIXME;
+ location / {
+ include uwsgi_params;
+ uwsgi_pass unix:/run/uwsgi/app/searx/socket;
+ }
+}
diff --git a/debian/examples/uwsgi/apps-available/searx.ini b/debian/examples/uwsgi/apps-available/searx.ini
new file mode 100644
index 0000000..480fd70
--- /dev/null
+++ b/debian/examples/uwsgi/apps-available/searx.ini
@@ -0,0 +1,26 @@
+[uwsgi]
+# Who will run the code
+uid = www-data
+gid = www-data
+
+# disable logging for privacy
+#disable-logging = true
+
+# Number of workers (usually CPU count)
+workers = 4
+
+# The right granted on the created socket
+chmod-socket = 666
+
+# Plugin to use and interpretor config
+single-interpreter = true
+master = true
+plugin = python3
+enable-threads = true
+lazy-apps = true
+
+# Module to import
+module = searx.webapp
+
+pythonpath = /usr/lib/python3/dist-packages/searx/
+chdir = /usr/lib/python3/dist-packages/searx/
diff --git a/debian/gbp.conf b/debian/gbp.conf
new file mode 100644
index 0000000..8b2dd41
--- /dev/null
+++ b/debian/gbp.conf
@@ -0,0 +1,8 @@
+[DEFAULT]
+upstream-branch = upstream
+debian-branch = master
+upstream-tag = %(version)s
+
+sign-tags = True
+pristine-tar = False
+pristine-tar-commit = False
diff --git a/debian/ionicons/generate.py b/debian/ionicons/generate.py
new file mode 100644
index 0000000..ffefdf0
--- /dev/null
+++ b/debian/ionicons/generate.py
@@ -0,0 +1,133 @@
+# Based on https://github.com/FontCustom/fontcustom/blob/master/lib/fontcustom/scripts/generate.py
+
+import fontforge
+import os
+import sys
+import json
+import re
+from subprocess import call
+from distutils.spawn import find_executable
+
+args = json.load(sys.stdin)
+
+f = fontforge.font()
+f.encoding = 'UnicodeFull'
+f.copyright = ''
+f.design_size = 16
+f.em = args['fontHeight']
+f.descent = args['descent']
+f.ascent = args['fontHeight'] - args['descent']
+if args['version']:
+ f.version = args['version']
+if args['normalize']:
+ f.autoWidth(0, 0, args['fontHeight'])
+
+KERNING = 15
+
+
+def create_empty_char(f, c):
+ pen = f.createChar(ord(c), c).glyphPen()
+ pen.moveTo((0, 0))
+ pen = None
+
+
+if args['addLigatures']:
+ f.addLookup('liga', 'gsub_ligature', (), (('liga', (('latn', ('dflt')), )), ))
+ f.addLookupSubtable('liga', 'liga')
+
+for dirname, dirnames, filenames in os.walk(args['inputDir']):
+ for filename in sorted(filenames):
+ name, ext = os.path.splitext(filename)
+ filePath = os.path.join(dirname, filename)
+ size = os.path.getsize(filePath)
+
+ if ext in ['.svg']:
+ # HACK: Remove <switch> </switch> tags
+ svgfile = open(filePath, 'r+')
+ svgtext = svgfile.read()
+ svgfile.seek(0)
+
+ # Replace the <switch> </switch> tags with nothing
+ svgtext = svgtext.replace('<switch>', '')
+ svgtext = svgtext.replace('</switch>', '')
+
+ if args['normalize']:
+ # Replace the width and the height
+ svgtext = re.sub(r'(<svg[^>]*)width="[^"]*"([^>]*>)', r'\1\2', svgtext)
+ svgtext = re.sub(r'(<svg[^>]*)height="[^"]*"([^>]*>)', r'\1\2', svgtext)
+
+ # Remove all contents of file so that we can write out the new contents
+ svgfile.truncate()
+ svgfile.write(svgtext)
+ svgfile.close()
+
+ cp = args['codepoints'][name]
+
+ if args['addLigatures']:
+ name = str(name) # Convert Unicode to a regular string because addPosSub doesn't work with Unicode
+ for char in name:
+ create_empty_char(f, char)
+ glyph = f.createChar(cp, name)
+ glyph.addPosSub('liga', tuple(name))
+ else:
+ glyph = f.createChar(cp, str(name))
+ glyph.importOutlines(filePath)
+
+ if args['normalize']:
+ glyph.left_side_bearing = glyph.right_side_bearing = 0
+ else:
+ glyph.width = args['fontHeight']
+
+ if args['round']:
+ glyph.round(int(args['round']))
+
+fontfile = args['dest'] + os.path.sep + args['fontFilename']
+
+f.fontname = args['fontFilename']
+f.familyname = args['fontFamilyName']
+f.fullname = args['fontFamilyName']
+
+if args['addLigatures']:
+ def generate(filename):
+ f.generate(filename, flags=('opentype'))
+else:
+ def generate(filename):
+ f.generate(filename)
+
+
+# TTF
+generate(fontfile + '.ttf')
+
+# Hint the TTF file
+# ttfautohint is optional
+if (find_executable('ttfautohint') and args['autoHint']):
+ call('ttfautohint --symbol --fallback-script=latn --no-info "%(font)s.ttf" "%(font)s-hinted.ttf" && mv "%(font)s-hinted.ttf" "%(font)s.ttf"' % {'font': fontfile}, shell=True)
+ f = fontforge.open(fontfile + '.ttf')
+
+# SVG
+if 'svg' in args['types']:
+ generate(fontfile + '.svg')
+
+ # Fix SVG header for webkit (from: https://github.com/fontello/font-builder/blob/master/bin/fontconvert.py)
+ svgfile = open(fontfile + '.svg', 'r+')
+ svgtext = svgfile.read()
+ svgfile.seek(0)
+ svgfile.write(svgtext.replace('<svg>', '<svg xmlns="http://www.w3.org/2000/svg">'))
+ svgfile.close()
+
+scriptPath = os.path.dirname(os.path.realpath(__file__))
+
+# WOFF
+if 'woff' in args['types']:
+ generate(fontfile + '.woff')
+
+# EOT
+if 'eot' in args['types']:
+ # eotlitetool.py script to generate IE7-compatible .eot fonts
+ call('python "%(path)s/../../bin/eotlitetool.py" "%(font)s.ttf" --output "%(font)s.eot"' % {'path': scriptPath, 'font': fontfile}, shell=True)
+
+# Delete TTF if not needed
+if (not 'ttf' in args['types']) and (not 'woff2' in args['types']):
+ os.remove(fontfile + '.ttf')
+
+print(json.dumps({'file': fontfile}))
diff --git a/debian/ionicons/generate_less.py b/debian/ionicons/generate_less.py
new file mode 100644
index 0000000..55fdc0c
--- /dev/null
+++ b/debian/ionicons/generate_less.py
@@ -0,0 +1,69 @@
+# /usr/bin/env python3
+#
+# Copyright: 2017 Johannes Schauer <josch@debian.org>
+#
+# 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.
+
+import sys
+import json
+
+args = json.load(sys.stdin)
+
+print("""
+@font-face {
+ font-family:"%s";""" % args["fontFamilyName"])
+
+srcs = []
+for t in args["types"]:
+ if t == "woff":
+ srcs.append("""url("../fonts/ion.woff") format("woff")""")
+ elif t == "woff2":
+ srcs.append("""url("../fonts/ion.woff2") format("woff2")""")
+ elif t == "ttf":
+ srcs.append("""url("../fonts/ion.ttf") format("truetype")""")
+ elif t == "svg":
+ srcs.append("""url("../fonts/ion.svg") format("svg")""")
+ else:
+ raise Exception("unknown font type: %s" % t)
+
+print("\tsrc:%s;" % ",\n\t\t".join(srcs))
+
+print("""
+ font-weight:normal;
+ font-style:normal;
+}
+
+.ion-icon {
+ &:before {
+ font-family:"%s";
+ }
+ display:inline-block;
+ vertical-align:middle;
+ line-height:1;
+ font-weight:normal;
+ font-style:normal;
+ speak:none;
+ text-decoration:inherit;
+ text-transform:none;
+ text-rendering:auto;
+ -webkit-font-smoothing:antialiased;
+ -moz-osx-font-smoothing:grayscale;
+}
+""" % args["fontFamilyName"])
+
+for k in sorted(args["codepoints"].keys()):
+ print("""
+.%s-%s {
+ &:before {
+ content:"\\%s";
+ }
+}""" % (args["fontFamilyName"], k, hex(args["codepoints"][k])[2:]))
diff --git a/debian/ionicons/input.json b/debian/ionicons/input.json
new file mode 100644
index 0000000..698db92
--- /dev/null
+++ b/debian/ionicons/input.json
@@ -0,0 +1,37 @@
+{
+ "types": ["woff", "ttf"],
+ "fontFamilyName": "ion",
+ "fontFilename": "ion",
+ "dest": "./debian/ionicons",
+ "round": 10e12,
+ "codepoints": {
+ "navicon-round": 61697,
+ "search": 61698,
+ "play": 61699,
+ "link": 61700,
+ "chevron-up": 61701,
+ "chevron-left": 61702,
+ "chevron-right": 61703,
+ "arrow-down-a": 61704,
+ "arrow-up-a": 61705,
+ "arrow-swap": 61706,
+ "telephone": 61707,
+ "arrow-dropdown": 61708,
+ "globe": 61709,
+ "time": 61710,
+ "location": 61711,
+ "warning": 61712,
+ "error": 61713,
+ "film-outline": 61714,
+ "music-note": 61715,
+ "close": 61716,
+ "more-vertical": 61717,
+ "magnet": 61718
+ },
+ "addLigatures": false,
+ "normalize": false,
+ "version": false,
+ "descent": 64,
+ "fontHeight": 512,
+ "inputDir": "./debian/ionicons/svg-renamed"
+}
diff --git a/debian/ionicons/svg-orig/alert-circled.svg b/debian/ionicons/svg-orig/alert-circled.svg
new file mode 100644
index 0000000..89d1143
--- /dev/null
+++ b/debian/ionicons/svg-orig/alert-circled.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<g>
+ <path d="M476.7,422.2L270.1,72.7c-2.9-5-8.3-8.7-14.1-8.7c-5.9,0-11.3,3.7-14.1,8.7L35.3,422.2c-2.8,5-4.8,13-1.9,17.9
+ c2.9,4.9,8.2,7.9,14,7.9h417.1c5.8,0,11.1-3,14-7.9C481.5,435.2,479.5,427.1,476.7,422.2z M288,400h-64v-48h64V400z M288,320h-64
+ V176h64V320z"/>
+</g>
+</svg>
diff --git a/debian/ionicons/svg-orig/android-alert.svg b/debian/ionicons/svg-orig/android-alert.svg
new file mode 100644
index 0000000..1eb63d6
--- /dev/null
+++ b/debian/ionicons/svg-orig/android-alert.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g id="Icon_30_">
+ <g>
+ <path d="M256,48C141.6,48,48,141.601,48,256s93.6,208,208,208c114.4,0,208-93.601,208-208S370.4,48,256,48z M280,360h-48v-40h48
+ V360z M280,272h-48V144h48V272z"/>
+ </g>
+</g>
+</svg>
diff --git a/debian/ionicons/svg-orig/android-arrow-dropdown.svg b/debian/ionicons/svg-orig/android-arrow-dropdown.svg
new file mode 100644
index 0000000..d46e962
--- /dev/null
+++ b/debian/ionicons/svg-orig/android-arrow-dropdown.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g>
+ <polygon points="128,192 256,320 384,192 "/>
+</g>
+</svg>
diff --git a/debian/ionicons/svg-orig/android-globe.svg b/debian/ionicons/svg-orig/android-globe.svg
new file mode 100644
index 0000000..677b2ac
--- /dev/null
+++ b/debian/ionicons/svg-orig/android-globe.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<path d="M256,48C141.124,48,48,141.125,48,256c0,114.875,93.124,208,208,208c114.875,0,208-93.125,208-208
+ C464,141.125,370.875,48,256,48z M234.451,432.999c-39.464-4.726-75.978-22.392-104.519-50.932
+ C96.258,348.393,77.714,303.622,77.714,256c0-42.87,15.036-83.424,42.601-115.659c0.71,8.517,2.463,17.648,2.014,24.175
+ c-1.64,23.795-3.988,38.687,9.94,58.762c5.426,7.819,6.759,19.028,9.4,28.078c2.583,8.854,12.902,13.498,20.019,18.953
+ c14.359,11.009,28.096,23.805,43.322,33.494c10.049,6.395,16.326,9.576,13.383,21.839c-2.367,9.862-3.028,15.937-8.13,24.723
+ c-1.557,2.681,5.877,19.918,8.351,22.392c7.498,7.497,14.938,14.375,23.111,21.125C254.396,404.351,240.494,417.954,234.451,432.999
+ z M382.067,382.067c-25.633,25.633-57.699,42.486-92.556,49.081c4.94-12.216,13.736-23.07,21.895-29.362
+ c7.097-5.476,15.986-16.009,19.693-24.352c3.704-8.332,8.611-15.555,13.577-23.217c7.065-10.899-17.419-27.336-25.353-30.781
+ c-17.854-7.751-31.294-18.21-47.161-29.375c-11.305-7.954-34.257,4.154-47.02-1.417c-17.481-7.633-31.883-20.896-47.078-32.339
+ c-15.68-11.809-14.922-25.576-14.922-42.997c12.282,0.453,29.754-3.399,37.908,6.478c2.573,3.117,11.42,17.042,17.342,12.094
+ c4.838-4.043-3.585-20.249-5.212-24.059c-5.005-11.715,11.404-16.284,19.803-24.228c10.96-10.364,34.47-26.618,32.612-34.047
+ s-23.524-28.477-36.249-25.193c-1.907,0.492-18.697,18.097-21.941,20.859c0.086-5.746,0.172-11.491,0.26-17.237
+ c0.055-3.628-6.768-7.352-6.451-9.692c0.8-5.914,17.262-16.647,21.357-21.357c-2.869-1.793-12.659-10.202-15.622-8.968
+ c-7.174,2.99-15.276,5.05-22.45,8.039c0-2.488-0.302-4.825-0.662-7.133c14.376-6.365,29.587-10.791,45.31-13.152l14.084,5.66
+ l9.944,11.801l9.924,10.233l8.675,2.795l13.779-12.995L282,87.929v-8.339c27.25,3.958,52.984,14.124,75.522,29.8
+ c-4.032,0.361-8.463,0.954-13.462,1.59c-2.065-1.22-4.714-1.774-6.965-2.623c6.531,14.042,13.343,27.89,20.264,41.746
+ c7.393,14.801,23.793,30.677,26.673,46.301c3.394,18.416,1.039,35.144,2.896,56.811c1.788,20.865,23.524,44.572,23.524,44.572
+ s10.037,3.419,18.384,2.228C421.055,330.798,405.103,359.029,382.067,382.067z"/>
+</svg>
diff --git a/debian/ionicons/svg-orig/android-more-vertical.svg b/debian/ionicons/svg-orig/android-more-vertical.svg
new file mode 100644
index 0000000..c1a71c8
--- /dev/null
+++ b/debian/ionicons/svg-orig/android-more-vertical.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<path d="M296,136c0-22.002-17.998-40-40-40s-40,17.998-40,40s17.998,40,40,40S296,158.002,296,136z M296,376
+ c0-22.002-17.998-40-40-40s-40,17.998-40,40s17.998,40,40,40S296,398.002,296,376z M296,256c0-22.002-17.998-40-40-40
+ s-40,17.998-40,40s17.998,40,40,40S296,278.002,296,256z"/>
+</svg>
diff --git a/debian/ionicons/svg-orig/android-time.svg b/debian/ionicons/svg-orig/android-time.svg
new file mode 100644
index 0000000..f81f46e
--- /dev/null
+++ b/debian/ionicons/svg-orig/android-time.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g id="Icon_1_">
+ <g>
+ <g>
+ <path fill-opacity="0.9" d="M256,43C137.789,43,43,138.851,43,256s94.789,213,213,213s213-95.851,213-213S373.149,43,256,43z
+ M256,426.4c-93.718,0-170.4-76.683-170.4-170.4S162.282,85.6,256,85.6S426.4,162.282,426.4,256S349.718,426.4,256,426.4z"/>
+ </g>
+ <polygon fill-opacity="0.9" points="266.65,149.5 234.7,149.5 234.7,277.3 346.525,344.393 362.5,317.768 266.65,261.324 "/>
+ </g>
+</g>
+</svg>
diff --git a/debian/ionicons/svg-orig/arrow-down-a.svg b/debian/ionicons/svg-orig/arrow-down-a.svg
new file mode 100644
index 0000000..4668ad1
--- /dev/null
+++ b/debian/ionicons/svg-orig/arrow-down-a.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<polygon points="256.5,448.5 448.5,256.5 336.5,256.5 336.5,64.5 176.5,64.5 176.5,256.5 64.5,256.5 "/>
+</svg>
diff --git a/debian/ionicons/svg-orig/arrow-swap.svg b/debian/ionicons/svg-orig/arrow-swap.svg
new file mode 100644
index 0000000..50740f7
--- /dev/null
+++ b/debian/ionicons/svg-orig/arrow-swap.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<g>
+ <path d="M64,328v48c0,4.4,3.6,8,8,8h248v64l128-96l-128-96v64H72C67.6,320,64,323.6,64,328z"/>
+ <path d="M448,184v-48c0-4.4-3.6-8-8-8H192V64L64,160l128,96v-64h248C444.4,192,448,188.4,448,184z"/>
+</g>
+</svg>
diff --git a/debian/ionicons/svg-orig/arrow-up-a.svg b/debian/ionicons/svg-orig/arrow-up-a.svg
new file mode 100644
index 0000000..e333a38
--- /dev/null
+++ b/debian/ionicons/svg-orig/arrow-up-a.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<polygon points="256.5,64.5 64.5,256.5 176.5,256.5 176.5,448.5 336.5,448.5 336.5,256.5 448.5,256.5 "/>
+</svg>
diff --git a/debian/ionicons/svg-orig/chevron-left.svg b/debian/ionicons/svg-orig/chevron-left.svg
new file mode 100644
index 0000000..556425e
--- /dev/null
+++ b/debian/ionicons/svg-orig/chevron-left.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<path d="M213.7,256L213.7,256L213.7,256L380.9,81.9c4.2-4.3,4.1-11.4-0.2-15.8l-29.9-30.6c-4.3-4.4-11.3-4.5-15.5-0.2L131.1,247.9
+ c-2.2,2.2-3.2,5.2-3,8.1c-0.1,3,0.9,5.9,3,8.1l204.2,212.7c4.2,4.3,11.2,4.2,15.5-0.2l29.9-30.6c4.3-4.4,4.4-11.5,0.2-15.8
+ L213.7,256z"/>
+</svg>
diff --git a/debian/ionicons/svg-orig/chevron-right.svg b/debian/ionicons/svg-orig/chevron-right.svg
new file mode 100644
index 0000000..7ac591a
--- /dev/null
+++ b/debian/ionicons/svg-orig/chevron-right.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<path d="M298.3,256L298.3,256L298.3,256L131.1,81.9c-4.2-4.3-4.1-11.4,0.2-15.8l29.9-30.6c4.3-4.4,11.3-4.5,15.5-0.2l204.2,212.7
+ c2.2,2.2,3.2,5.2,3,8.1c0.1,3-0.9,5.9-3,8.1L176.7,476.8c-4.2,4.3-11.2,4.2-15.5-0.2L131.3,446c-4.3-4.4-4.4-11.5-0.2-15.8
+ L298.3,256z"/>
+</svg>
diff --git a/debian/ionicons/svg-orig/chevron-up.svg b/debian/ionicons/svg-orig/chevron-up.svg
new file mode 100644
index 0000000..34355f3
--- /dev/null
+++ b/debian/ionicons/svg-orig/chevron-up.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<path d="M256,213.7L256,213.7L256,213.7l174.2,167.2c4.3,4.2,11.4,4.1,15.8-0.2l30.6-29.9c4.4-4.3,4.5-11.3,0.2-15.5L264.1,131.1
+ c-2.2-2.2-5.2-3.2-8.1-3c-3-0.1-5.9,0.9-8.1,3L35.2,335.3c-4.3,4.2-4.2,11.2,0.2,15.5L66,380.7c4.4,4.3,11.5,4.4,15.8,0.2L256,213.7
+ z"/>
+</svg>
diff --git a/debian/ionicons/svg-orig/close-round.svg b/debian/ionicons/svg-orig/close-round.svg
new file mode 100644
index 0000000..d8b5554
--- /dev/null
+++ b/debian/ionicons/svg-orig/close-round.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<path d="M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5
+ c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9
+ c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"/>
+</svg>
diff --git a/debian/ionicons/svg-orig/ios-film-outline.svg b/debian/ionicons/svg-orig/ios-film-outline.svg
new file mode 100644
index 0000000..cc7b723
--- /dev/null
+++ b/debian/ionicons/svg-orig/ios-film-outline.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<path d="M56,88v336h400V88H56z M128,408H72v-48h56V408z M128,344H72v-48h56V344z M128,280H72v-48h56V280z M128,216H72v-48h56V216z
+ M128,152H72v-48h56V152z M368,408H144V264h224V408z M368,248H144V104h224V248z M440,408h-56v-48h56V408z M440,344h-56v-48h56V344z
+ M440,280h-56v-48h56V280z M440,216h-56v-48h56V216z M440,152h-56v-48h56V152z"/>
+</svg>
diff --git a/debian/ionicons/svg-orig/ios-telephone.svg b/debian/ionicons/svg-orig/ios-telephone.svg
new file mode 100644
index 0000000..ff1beb6
--- /dev/null
+++ b/debian/ionicons/svg-orig/ios-telephone.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<path d="M415.9,335.5c-14.6-15-56.1-43.1-83.3-43.1c-6.3,0-11.8,1.4-16.3,4.3c-13.3,8.5-23.9,15.1-29,15.1c-2.8,0-5.8-2.5-12.4-8.2
+ l-1.1-1c-18.3-15.9-22.2-20-29.3-27.4l-1.8-1.9c-1.3-1.3-2.4-2.5-3.5-3.6c-6.2-6.4-10.7-11-26.6-29l-0.7-0.8
+ c-7.6-8.6-12.6-14.2-12.9-18.3c-0.3-4,3.2-10.5,12.1-22.6c10.8-14.6,11.2-32.6,1.3-53.5c-7.9-16.5-20.8-32.3-32.2-46.2l-1-1.2
+ c-9.8-12-21.2-18-33.9-18c-14.1,0-25.8,7.6-32,11.6c-0.5,0.3-1,0.7-1.5,1c-13.9,8.8-24,20.9-27.8,33.2c-5.7,18.5-9.5,42.5,17.8,92.4
+ c23.6,43.2,45,72.2,79,107.1c32,32.8,46.2,43.4,78,66.4c35.4,25.6,69.4,40.3,93.2,40.3c22.1,0,39.5,0,64.3-29.9
+ C442.3,370.8,431.5,351.6,415.9,335.5z"/>
+</svg>
diff --git a/debian/ionicons/svg-orig/link.svg b/debian/ionicons/svg-orig/link.svg
new file mode 100644
index 0000000..791b0d7
--- /dev/null
+++ b/debian/ionicons/svg-orig/link.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<g>
+ <path d="M256.5,208H256v0C256.2,208,256.3,208,256.5,208z"/>
+ <path d="M368.5,160H320c0,0,26,17,31.6,48H368h0.5c17.6,0,31.5,13.9,31.5,31.5v32c0,17.6-13.9,32.5-31.5,32.5h-112
+ c-17.6,0-32.5-14.9-32.5-32.5V240h-48v31.5c0,11.5,2.5,22.5,6.9,32.5c12.6,28.2,40.9,48,73.6,48h112c44.2,0,79.5-36.3,79.5-80.5
+ v-32C448,195.3,412.7,160,368.5,160z"/>
+ <path d="M329.6,208c-12.1-28.3-40.1-48-73.1-48h-112c-44.2,0-80.5,35.3-80.5,79.5v32c0,44.2,36.3,80.5,80.5,80.5H192
+ c0,0-25.8-17-32.1-48h-15.4c-17.6,0-32.5-14.9-32.5-32.5v-32c0-17.6,14.9-31.5,32.5-31.5H256h0.5c17.6,0,31.5,13.9,31.5,31.5v32
+ c0,0.2,0,0.3,0,0.5h48c0-0.2,0-0.3,0-0.5v-32C336,228.3,333.7,217.6,329.6,208z"/>
+</g>
+</svg>
diff --git a/debian/ionicons/svg-orig/location.svg b/debian/ionicons/svg-orig/location.svg
new file mode 100644
index 0000000..1b95b73
--- /dev/null
+++ b/debian/ionicons/svg-orig/location.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<g>
+ <path d="M256,64c-65.9,0-119.3,53.7-119.3,120c0,114.6,119.3,264,119.3,264s119.3-149.4,119.3-264C375.3,117.7,321.9,64,256,64z
+ M256,242.2c-31.2,0-56.4-25.4-56.4-56.7c0-31.3,25.3-56.8,56.4-56.8c31.2,0,56.4,25.4,56.4,56.8
+ C312.4,216.8,287.2,242.2,256,242.2z"/>
+</g>
+</svg>
diff --git a/debian/ionicons/svg-orig/music-note.svg b/debian/ionicons/svg-orig/music-note.svg
new file mode 100644
index 0000000..61f2548
--- /dev/null
+++ b/debian/ionicons/svg-orig/music-note.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<path d="M426,32.1c-2.2,0-5.1,0.6-5.1,0.6L203.3,65.9C189.5,69.6,177,83,176,97.5V384h-61v-0.1c-28,0-51.1,20-51.1,48
+ s23.1,48,51.3,48h36.2c15.3,0,28.9-6.9,38.3-17.5c0.1-0.1,0.3-0.1,0.4-0.2c0.6-0.6,1-1.5,1.5-2.1c1.3-1.6,2.4-3.2,3.4-5
+ C204.6,441,208,422.3,208,414V182l208-38c0,0,0,136,0,192h-60.5c-28.3,0-51.2,19.9-51.2,48s22.9,48,51.2,48h37.2
+ c18.2,0,34.1-6,43.2-21c0,0,0.1,0,0.2,0c9-12,12-30.2,12-54.9c0-24.8,0-302.8,0-302.8C448,41.6,438.1,32.1,426,32.1z"/>
+</svg>
diff --git a/debian/ionicons/svg-orig/navicon-round.svg b/debian/ionicons/svg-orig/navicon-round.svg
new file mode 100644
index 0000000..586a410
--- /dev/null
+++ b/debian/ionicons/svg-orig/navicon-round.svg
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<g>
+ <path d="M417.4,224H94.6C77.7,224,64,238.3,64,256c0,17.7,13.7,32,30.6,32h322.8c16.9,0,30.6-14.3,30.6-32
+ C448,238.3,434.3,224,417.4,224z"/>
+ <path d="M417.4,96H94.6C77.7,96,64,110.3,64,128c0,17.7,13.7,32,30.6,32h322.8c16.9,0,30.6-14.3,30.6-32
+ C448,110.3,434.3,96,417.4,96z"/>
+ <path d="M417.4,352H94.6C77.7,352,64,366.3,64,384c0,17.7,13.7,32,30.6,32h322.8c16.9,0,30.6-14.3,30.6-32
+ C448,366.3,434.3,352,417.4,352z"/>
+</g>
+</svg>
diff --git a/debian/ionicons/svg-orig/play.svg b/debian/ionicons/svg-orig/play.svg
new file mode 100644
index 0000000..2b53155
--- /dev/null
+++ b/debian/ionicons/svg-orig/play.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<path d="M405.2,232.9L126.8,67.2c-3.4-2-6.9-3.2-10.9-3.2c-10.9,0-19.8,9-19.8,20H96v344h0.1c0,11,8.9,20,19.8,20
+ c4.1,0,7.5-1.4,11.2-3.4l278.1-165.5c6.6-5.5,10.8-13.8,10.8-23.1C416,246.7,411.8,238.5,405.2,232.9z"/>
+</svg>
diff --git a/debian/ionicons/svg-orig/search.svg b/debian/ionicons/svg-orig/search.svg
new file mode 100644
index 0000000..9c51b98
--- /dev/null
+++ b/debian/ionicons/svg-orig/search.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<path d="M445,386.7l-84.8-85.9c13.8-24.1,21-50.9,21-77.9c0-87.6-71.2-158.9-158.6-158.9C135.2,64,64,135.3,64,222.9
+ c0,87.6,71.2,158.9,158.6,158.9c27.9,0,55.5-7.7,80.1-22.4l84.4,85.6c1.9,1.9,4.6,3.1,7.3,3.1c2.7,0,5.4-1.1,7.3-3.1l43.3-43.8
+ C449,397.1,449,390.7,445,386.7z M222.6,125.9c53.4,0,96.8,43.5,96.8,97c0,53.5-43.4,97-96.8,97c-53.4,0-96.8-43.5-96.8-97
+ C125.8,169.4,169.2,125.9,222.6,125.9z"/>
+</svg>
diff --git a/debian/ionicons/svg-renamed/arrow-down-a.svg b/debian/ionicons/svg-renamed/arrow-down-a.svg
new file mode 120000
index 0000000..bf833d0
--- /dev/null
+++ b/debian/ionicons/svg-renamed/arrow-down-a.svg
@@ -0,0 +1 @@
+../svg-orig/arrow-down-a.svg \ No newline at end of file
diff --git a/debian/ionicons/svg-renamed/arrow-dropdown.svg b/debian/ionicons/svg-renamed/arrow-dropdown.svg
new file mode 120000
index 0000000..2ab7ddd
--- /dev/null
+++ b/debian/ionicons/svg-renamed/arrow-dropdown.svg
@@ -0,0 +1 @@
+../svg-orig/android-arrow-dropdown.svg \ No newline at end of file
diff --git a/debian/ionicons/svg-renamed/arrow-swap.svg b/debian/ionicons/svg-renamed/arrow-swap.svg
new file mode 120000
index 0000000..603c680
--- /dev/null
+++ b/debian/ionicons/svg-renamed/arrow-swap.svg
@@ -0,0 +1 @@
+../svg-orig/arrow-swap.svg \ No newline at end of file
diff --git a/debian/ionicons/svg-renamed/arrow-up-a.svg b/debian/ionicons/svg-renamed/arrow-up-a.svg
new file mode 120000
index 0000000..a92de03
--- /dev/null
+++ b/debian/ionicons/svg-renamed/arrow-up-a.svg
@@ -0,0 +1 @@
+../svg-orig/arrow-up-a.svg \ No newline at end of file
diff --git a/debian/ionicons/svg-renamed/chevron-left.svg b/debian/ionicons/svg-renamed/chevron-left.svg
new file mode 120000
index 0000000..f451cdb
--- /dev/null
+++ b/debian/ionicons/svg-renamed/chevron-left.svg
@@ -0,0 +1 @@
+../svg-orig/chevron-left.svg \ No newline at end of file
diff --git a/debian/ionicons/svg-renamed/chevron-right.svg b/debian/ionicons/svg-renamed/chevron-right.svg
new file mode 120000
index 0000000..83209fe
--- /dev/null
+++ b/debian/ionicons/svg-renamed/chevron-right.svg
@@ -0,0 +1 @@
+../svg-orig/chevron-right.svg \ No newline at end of file
diff --git a/debian/ionicons/svg-renamed/chevron-up.svg b/debian/ionicons/svg-renamed/chevron-up.svg
new file mode 120000
index 0000000..085ce74
--- /dev/null
+++ b/debian/ionicons/svg-renamed/chevron-up.svg
@@ -0,0 +1 @@
+../svg-orig/chevron-up.svg \ No newline at end of file
diff --git a/debian/ionicons/svg-renamed/close.svg b/debian/ionicons/svg-renamed/close.svg
new file mode 120000
index 0000000..69cbfa5
--- /dev/null
+++ b/debian/ionicons/svg-renamed/close.svg
@@ -0,0 +1 @@
+../svg-orig/close-round.svg \ No newline at end of file
diff --git a/debian/ionicons/svg-renamed/error.svg b/debian/ionicons/svg-renamed/error.svg
new file mode 120000
index 0000000..1f48897
--- /dev/null
+++ b/debian/ionicons/svg-renamed/error.svg
@@ -0,0 +1 @@
+../svg-orig/android-alert.svg \ No newline at end of file
diff --git a/debian/ionicons/svg-renamed/film-outline.svg b/debian/ionicons/svg-renamed/film-outline.svg
new file mode 120000
index 0000000..752dcdc
--- /dev/null
+++ b/debian/ionicons/svg-renamed/film-outline.svg
@@ -0,0 +1 @@
+../svg-orig/ios-film-outline.svg \ No newline at end of file
diff --git a/debian/ionicons/svg-renamed/globe.svg b/debian/ionicons/svg-renamed/globe.svg
new file mode 120000
index 0000000..471518d
--- /dev/null
+++ b/debian/ionicons/svg-renamed/globe.svg
@@ -0,0 +1 @@
+../svg-orig/android-globe.svg \ No newline at end of file
diff --git a/debian/ionicons/svg-renamed/link.svg b/debian/ionicons/svg-renamed/link.svg
new file mode 120000
index 0000000..5c0a7c5
--- /dev/null
+++ b/debian/ionicons/svg-renamed/link.svg
@@ -0,0 +1 @@
+../svg-orig/link.svg \ No newline at end of file
diff --git a/debian/ionicons/svg-renamed/location.svg b/debian/ionicons/svg-renamed/location.svg
new file mode 120000
index 0000000..870a3f9
--- /dev/null
+++ b/debian/ionicons/svg-renamed/location.svg
@@ -0,0 +1 @@
+../svg-orig/location.svg \ No newline at end of file
diff --git a/debian/ionicons/svg-renamed/more-vertical.svg b/debian/ionicons/svg-renamed/more-vertical.svg
new file mode 120000
index 0000000..4ddafee
--- /dev/null
+++ b/debian/ionicons/svg-renamed/more-vertical.svg
@@ -0,0 +1 @@
+../svg-orig/android-more-vertical.svg \ No newline at end of file
diff --git a/debian/ionicons/svg-renamed/music-note.svg b/debian/ionicons/svg-renamed/music-note.svg
new file mode 120000
index 0000000..e1df14b
--- /dev/null
+++ b/debian/ionicons/svg-renamed/music-note.svg
@@ -0,0 +1 @@
+../svg-orig/music-note.svg \ No newline at end of file
diff --git a/debian/ionicons/svg-renamed/navicon-round.svg b/debian/ionicons/svg-renamed/navicon-round.svg
new file mode 120000
index 0000000..9105e52
--- /dev/null
+++ b/debian/ionicons/svg-renamed/navicon-round.svg
@@ -0,0 +1 @@
+../svg-orig/navicon-round.svg \ No newline at end of file
diff --git a/debian/ionicons/svg-renamed/play.svg b/debian/ionicons/svg-renamed/play.svg
new file mode 120000
index 0000000..fb68566
--- /dev/null
+++ b/debian/ionicons/svg-renamed/play.svg
@@ -0,0 +1 @@
+../svg-orig/play.svg \ No newline at end of file
diff --git a/debian/ionicons/svg-renamed/search.svg b/debian/ionicons/svg-renamed/search.svg
new file mode 120000
index 0000000..3e4619d
--- /dev/null
+++ b/debian/ionicons/svg-renamed/search.svg
@@ -0,0 +1 @@
+../svg-orig/search.svg \ No newline at end of file
diff --git a/debian/ionicons/svg-renamed/telephone.svg b/debian/ionicons/svg-renamed/telephone.svg
new file mode 120000
index 0000000..faa7d07
--- /dev/null
+++ b/debian/ionicons/svg-renamed/telephone.svg
@@ -0,0 +1 @@
+../svg-orig/ios-telephone.svg \ No newline at end of file
diff --git a/debian/ionicons/svg-renamed/time.svg b/debian/ionicons/svg-renamed/time.svg
new file mode 120000
index 0000000..4246b4d
--- /dev/null
+++ b/debian/ionicons/svg-renamed/time.svg
@@ -0,0 +1 @@
+../svg-orig/android-time.svg \ No newline at end of file
diff --git a/debian/ionicons/svg-renamed/warning.svg b/debian/ionicons/svg-renamed/warning.svg
new file mode 120000
index 0000000..8ef8f9a
--- /dev/null
+++ b/debian/ionicons/svg-renamed/warning.svg
@@ -0,0 +1 @@
+../svg-orig/alert-circled.svg \ No newline at end of file
diff --git a/debian/patches/debian-changes b/debian/patches/debian-changes
new file mode 100644
index 0000000..d8d360a
--- /dev/null
+++ b/debian/patches/debian-changes
@@ -0,0 +1,206 @@
+The Debian packaging of searx is maintained in git, using the merging workflow
+described in dgit-maint-merge(7). There isn't a patch queue that can be
+represented as a quilt series.
+
+A detailed breakdown of the changes is available from their canonical
+representation - git commits in the packaging repository. For example, to see
+the changes made by the Debian maintainer in the first upload of upstream
+version 1.2.3, you could use:
+
+ % git clone https://git.dgit.debian.org/searx
+ % cd searx
+ % git log --oneline 1.2.3..debian/1.2.3-1 -- . ':!debian'
+
+(If you have dgit, use `dgit clone searx`, rather than plain `git clone`.)
+
+A single combined diff, containing all the changes, follows.
+--- searx-0.15.0+dfsg1.orig/manage.sh
++++ searx-0.15.0+dfsg1/manage.sh
+@@ -110,8 +110,7 @@ tests() {
+ #
+
+ npm_path_setup() {
+- which npm || (printf 'Error: npm is not found\n'; exit 1)
+- export PATH="$(npm bin)":$PATH
++ true
+ }
+
+ npm_packages() {
+@@ -133,7 +132,7 @@ npm_packages() {
+ build_style() {
+ npm_path_setup
+
+- lessc --clean-css="--s1 --advanced --compatibility=ie9" "$BASE_DIR/searx/static/$1" "$BASE_DIR/searx/static/$2"
++ lessc -x "$BASE_DIR/searx/static/$1" "$BASE_DIR/searx/static/$2"
+ }
+
+ styles() {
+@@ -147,8 +146,15 @@ styles() {
+ build_style themes/courgette/less/style-rtl.less themes/courgette/css/style-rtl.css
+ echo '[!] Building pix-art style'
+ build_style themes/pix-art/less/style.less themes/pix-art/css/style.css
+- echo '[!] Building bootstrap style'
+- build_style less/bootstrap/bootstrap.less css/bootstrap.min.css
++ echo '[!] Building simple style'
++ build_style themes/simple/less/style.less themes/simple/css/searx.min.css
++ build_style themes/simple/less/style-rtl.less themes/simple/css/searx-rtl.min.css
++ echo '[!] Building logicodev'
++ build_style themes/oscar/less/logicodev/oscar.less themes/oscar/css/logicodev.min.css
++ echo '[!] Building logicodev-dark'
++ build_style themes/oscar/less/logicodev-dark/oscar.less themes/oscar/css/logicodev-dark.min.css
++ echo '[!] Building pointhi'
++ build_style themes/oscar/less/pointhi/oscar.less themes/oscar/css/pointhi.min.css
+ }
+
+ grunt_build() {
+--- searx-0.15.0+dfsg1.orig/searx/settings.yml
++++ searx-0.15.0+dfsg1/searx/settings.yml
+@@ -18,8 +18,8 @@ server:
+ http_protocol_version : "1.0" # 1.0 and 1.1 are supported
+
+ ui:
+- static_path : "" # Custom static path - leave it blank if you didn't change
+- templates_path : "" # Custom templates path - leave it blank if you didn't change
++ static_path : "/usr/share/python3-searx/static" # Custom static path - leave it blank if you didn't change
++ templates_path : "/usr/share/python3-searx/templates" # Custom templates path - leave it blank if you didn't change
+ default_theme : oscar # ui theme
+ default_locale : "" # Default interface locale - leave blank to detect from browser information or use codes from the 'locales' config section
+ theme_args :
+--- searx-0.15.0+dfsg1.orig/searx/static/themes/oscar/gruntfile.js
++++ searx-0.15.0+dfsg1/searx/static/themes/oscar/gruntfile.js
+@@ -81,16 +81,8 @@ module.exports = function(grunt) {
+ }
+ });
+
+- grunt.loadNpmTasks('grunt-contrib-uglify');
+- grunt.loadNpmTasks('grunt-contrib-jshint');
+- grunt.loadNpmTasks('grunt-contrib-watch');
+- grunt.loadNpmTasks('grunt-contrib-concat');
+- grunt.loadNpmTasks('grunt-contrib-less');
+-
+- grunt.registerTask('test', ['jshint']);
+-
+- grunt.registerTask('default', ['jshint', 'concat', 'uglify', 'less']);
+-
+- grunt.registerTask('styles', ['less']);
++ grunt.loadNpmTasks('grunt-contrib-uglify', '/usr/lib/nodejs');
++ grunt.loadNpmTasks('grunt-contrib-concat', '/usr/lib/nodejs');
+
++ grunt.registerTask('default', ['concat', 'uglify']);
+ };
+--- searx-0.15.0+dfsg1.orig/searx/static/themes/simple/gruntfile.js
++++ searx-0.15.0+dfsg1/searx/static/themes/simple/gruntfile.js
+@@ -64,12 +64,6 @@ module.exports = function(grunt) {
+ production: {
+ options: {
+ paths: ["less"],
+- plugins: [
+- new (require('less-plugin-clean-css'))({
+- advanced: true,
+- compatibility: '*'
+- })
+- ],
+ banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n'
+ },
+ files: {
+@@ -144,15 +138,8 @@ module.exports = function(grunt) {
+ }
+ });
+
+- grunt.loadNpmTasks('grunt-contrib-watch');
+- grunt.loadNpmTasks('grunt-contrib-uglify');
+- grunt.loadNpmTasks('grunt-contrib-jshint');
+- grunt.loadNpmTasks('grunt-contrib-concat');
+- grunt.loadNpmTasks('grunt-contrib-less');
+- grunt.loadNpmTasks('grunt-contrib-cssmin');
+- grunt.loadNpmTasks('grunt-webfont');
++ grunt.loadNpmTasks('grunt-contrib-uglify', '/usr/lib/nodejs');
++ grunt.loadNpmTasks('grunt-contrib-concat', '/usr/lib/nodejs');
+
+- grunt.registerTask('test', ['jshint']);
+-
+- grunt.registerTask('default', ['jshint', 'concat', 'uglify', 'less:development', 'less:production']);
++ grunt.registerTask('default', ['concat', 'uglify']);
+ };
+--- searx-0.15.0+dfsg1.orig/searx/static/themes/simple/js/searx_src/autocomplete.js
++++ searx-0.15.0+dfsg1/searx/static/themes/simple/js/searx_src/autocomplete.js
+@@ -1,4 +1,51 @@
+-(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.AutoComplete = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
++(function(f){
++ if(typeof exports=== "object" && typeof module !== "undefined") {
++ module.exports = f()
++ } else if(typeof define === "function" && define.amd) {
++ define([], f)
++ }else{
++ var g;
++ if(typeof window !== "undefined") {
++ g = window
++ } else if(typeof global !== "undefined") {
++ g = global
++ } else if(typeof self !== "undefined") {
++ g = self
++ } else {
++ g = this
++ }
++ g.AutoComplete = f()
++ }
++})(function(){
++ var define, module, exports;
++ return (function e(t, n, r){
++ function s(o, u){
++ if(!n[o]){
++ if(!t[o]){
++ var a = typeof require == "function" && require;
++ if(!u && a)
++ return a(o, !0);
++ if(i)
++ return i(o, !0);
++ var f = new Error("Cannot find module '" + o + "'");
++ throw f.code = "MODULE_NOT_FOUND", f
++ }
++ var l = n[o] = {
++ exports:{}
++ };
++ t[o][0].call(l.exports,function(e) {
++ var n = t[o][1][e];
++ return s(n?n:e)
++ }, l, l.exports, e, t, n, r)
++ }
++ return n[o].exports
++ }
++ var i = typeof require == "function" && require;
++ for(var o = 0; o < r.length; o++)
++ s(r[o]);
++ return s
++ })({
++ 1:[function(require, module, exports){
+ /*
+ * @license MIT
+ *
+--- searx-0.15.0+dfsg1.orig/setup.py
++++ searx-0.15.0+dfsg1/setup.py
+@@ -51,23 +51,9 @@ setup(
+ },
+ package_data={
+ 'searx': [
+- 'settings.yml',
+- '../README.rst',
+- '../requirements.txt',
+- '../requirements-dev.txt',
+ 'data/*',
+ 'plugins/*/*',
+- 'static/*.*',
+- 'static/*/*.*',
+- 'static/*/*/*.*',
+- 'static/*/*/*/*.*',
+- 'static/*/*/*/*/*.*',
+- 'templates/*/*.*',
+- 'templates/*/*/*.*',
+- 'tests/*',
+- 'tests/*/*',
+- 'tests/*/*/*',
+- 'translations/*/*/*'
++ 'translations/*/*/*.mo'
+ ],
+ },
+
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..7bb8252
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1 @@
+debian-changes
diff --git a/debian/python3-searx.install b/debian/python3-searx.install
new file mode 100644
index 0000000..7ac30c8
--- /dev/null
+++ b/debian/python3-searx.install
@@ -0,0 +1,22 @@
+# we must list each theme subdirectory manually because we do not want to
+# install the less subdirectory or the oscar gruntfile or package.json
+searx/static/plugins /usr/share/python3-searx/static
+searx/static/themes/courgette/css /usr/share/python3-searx/static/themes/courgette
+searx/static/themes/courgette/img /usr/share/python3-searx/static/themes/courgette
+searx/static/themes/courgette/js /usr/share/python3-searx/static/themes/courgette
+searx/static/themes/legacy/css /usr/share/python3-searx/static/themes/legacy
+searx/static/themes/legacy/img /usr/share/python3-searx/static/themes/legacy
+searx/static/themes/legacy/js /usr/share/python3-searx/static/themes/legacy
+searx/static/themes/oscar/css /usr/share/python3-searx/static/themes/oscar
+searx/static/themes/oscar/img /usr/share/python3-searx/static/themes/oscar
+searx/static/themes/oscar/js /usr/share/python3-searx/static/themes/oscar
+searx/static/themes/pix-art/css /usr/share/python3-searx/static/themes/pix-art
+searx/static/themes/pix-art/img /usr/share/python3-searx/static/themes/pix-art
+searx/static/themes/pix-art/js /usr/share/python3-searx/static/themes/pix-art
+searx/static/themes/simple/css /usr/share/python3-searx/static/themes/simple
+searx/static/themes/simple/img /usr/share/python3-searx/static/themes/simple
+searx/static/themes/simple/js /usr/share/python3-searx/static/themes/simple
+debian/ionicons/ion.woff /usr/share/python3-searx/static/themes/simple/fonts
+debian/ionicons/ion.ttf /usr/share/python3-searx/static/themes/simple/fonts
+searx/templates /usr/share/python3-searx
+usr/lib/python3*
diff --git a/debian/python3-searx.links b/debian/python3-searx.links
new file mode 100644
index 0000000..8c37498
--- /dev/null
+++ b/debian/python3-searx.links
@@ -0,0 +1,8 @@
+/usr/share/javascript/requirejs/require.min.js /usr/share/python3-searx/static/js/require-2.1.15.min.js
+/usr/share/javascript/bootstrap/css/bootstrap.min.css /usr/share/python3-searx/static/css/bootstrap.min.css
+/usr/share/javascript/bootstrap/fonts/glyphicons-halflings-regular.ttf /usr/share/python3-searx/static/fonts/glyphicons-halflings-regular.ttf
+/usr/share/javascript/bootstrap/fonts/glyphicons-halflings-regular.woff /usr/share/python3-searx/static/fonts/glyphicons-halflings-regular.woff
+/usr/share/javascript/bootstrap/fonts/glyphicons-halflings-regular.woff2 /usr/share/python3-searx/static/fonts/glyphicons-halflings-regular.woff2
+/usr/share/javascript/bootstrap/js/bootstrap.js /usr/share/python3-searx/static/js/bootstrap.min.js
+/usr/share/javascript/jquery/jquery.min.js /usr/share/python3-searx/static/js/jquery-1.11.1.min.js
+/usr/share/javascript/leaflet/leaflet.css /usr/share/python3-searx/static/css/leaflet.min.css
diff --git a/debian/python3-searx.lintian-overrides b/debian/python3-searx.lintian-overrides
new file mode 100644
index 0000000..06cb856
--- /dev/null
+++ b/debian/python3-searx.lintian-overrides
@@ -0,0 +1,2 @@
+# the font is only used for the "simple" theme
+font-in-non-font-package
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..c1f696b
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,19 @@
+#! /usr/bin/make -f
+
+#export DH_VERBOSE = 1
+
+export PYBUILD_DISABLE_python2=1
+
+%:
+ dh $@ --with python3 --buildsystem=pybuild
+
+override_dh_auto_build:
+ python ./debian/ionicons/generate_less.py < ./debian/ionicons/input.json > searx/static/themes/simple/less/ion.less
+ dh_auto_build
+ ./manage.sh styles # needed to run lessc because grunt-contrib-less is not packaged
+ ./manage.sh locales # run pybabel
+ ./manage.sh grunt_build # build the oscar theme
+ python ./debian/ionicons/generate.py < ./debian/ionicons/input.json
+
+# do not run tests because the splinter python3 module is not packaged yet
+override_dh_auto_test:
diff --git a/debian/searx.docs b/debian/searx.docs
new file mode 100644
index 0000000..a1320b1
--- /dev/null
+++ b/debian/searx.docs
@@ -0,0 +1 @@
+README.rst
diff --git a/debian/searx.examples b/debian/searx.examples
new file mode 100644
index 0000000..2fedfe1
--- /dev/null
+++ b/debian/searx.examples
@@ -0,0 +1,3 @@
+debian/examples/nginx
+debian/examples/uwsgi
+searx/settings.yml
diff --git a/debian/searx.install b/debian/searx.install
new file mode 100644
index 0000000..57db456
--- /dev/null
+++ b/debian/searx.install
@@ -0,0 +1 @@
+usr/bin/searx-run
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/source/options b/debian/source/options
new file mode 100644
index 0000000..3152b74
--- /dev/null
+++ b/debian/source/options
@@ -0,0 +1,4 @@
+# some source package options such that dgit can transparently handle the
+# "dropping" and "refreshing" changes to the upstream source
+single-debian-patch
+auto-commit
diff --git a/debian/source/patch-header b/debian/source/patch-header
new file mode 100644
index 0000000..80cadf1
--- /dev/null
+++ b/debian/source/patch-header
@@ -0,0 +1,16 @@
+The Debian packaging of searx is maintained in git, using the merging workflow
+described in dgit-maint-merge(7). There isn't a patch queue that can be
+represented as a quilt series.
+
+A detailed breakdown of the changes is available from their canonical
+representation - git commits in the packaging repository. For example, to see
+the changes made by the Debian maintainer in the first upload of upstream
+version 1.2.3, you could use:
+
+ % git clone https://git.dgit.debian.org/searx
+ % cd searx
+ % git log --oneline 1.2.3..debian/1.2.3-1 -- . ':!debian'
+
+(If you have dgit, use `dgit clone searx`, rather than plain `git clone`.)
+
+A single combined diff, containing all the changes, follows.
diff --git a/debian/tests/control b/debian/tests/control
new file mode 100644
index 0000000..dbabf19
--- /dev/null
+++ b/debian/tests/control
@@ -0,0 +1,3 @@
+Tests: general
+Restrictions: allow-stderr, isolation-container, needs-root
+Depends: @, curl, nginx, uwsgi, uwsgi-plugin-python3
diff --git a/debian/tests/general b/debian/tests/general
new file mode 100644
index 0000000..2dfba3f
--- /dev/null
+++ b/debian/tests/general
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -ex
+
+rm /etc/nginx/sites-enabled/default
+cp /usr/share/doc/searx/examples/nginx/sites-available/searx /etc/nginx/sites-available
+ln -s ../sites-available/searx /etc/nginx/sites-enabled/searx
+cp /usr/share/doc/searx/examples/uwsgi/apps-available/searx.ini /etc/uwsgi/apps-available
+ln -s ../apps-available/searx.ini /etc/uwsgi/apps-enabled/searx.ini
+mkdir /etc/searx
+gzip --to-stdout --decompress /usr/share/doc/searx/examples/settings.yml.gz > /etc/searx/settings.yml
+sed -i -e "s/ultrasecretkey/$(openssl rand -hex 16)/g" /etc/searx/settings.yml
+systemctl restart nginx
+systemctl restart uwsgi
+curl localhost | grep 'input type="search" name="q"'
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..d2a6596
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,3 @@
+version=4
+opts=compression=xz,dversionmangle=s/\+dfsg\d*$//,repacksuffix=+dfsg1,repack \
+ https://github.com/asciimoo/searx/tags .*/v(\d\S+)\.tar\.gz