Commit Graph

1068 Commits

Author SHA1 Message Date
Florian Bruhin
8d9a699b5b test requirements: Update to pytest-bdd 2.17.0
This also allows us to have dynamic pyqt>=5.3.1 etc. tags.
2016-06-30 14:02:30 +02:00
Florian Bruhin
03fbacd93c requirements: Update vulture to 0.9
* Don't flag attributes as unused if they are used as global variables in
  another module.
* Don't consider "True" and "False" variable names.
* Abort with error message when invoked on .pyc files.

This means we can remove the whitelisted globals in run_vulture.py and
the associated xfailing test.

We also needed to adjust run_vulture.py slightly as the file attribute
got renamed to filename.
2016-06-29 23:44:39 +02:00
Florian Bruhin
cd136b7b33 flake8 reqs: Update flake8-copyright to 0.2.0
Add flake8 v3.x compatibility
2016-06-28 20:48:52 +02:00
Florian Bruhin
72e5bf35e1 flake8 requirements: Update pep8-naming to 0.4.1 2016-06-26 15:13:12 +02:00
Florian Bruhin
eda6fc6e17 flake8 requirements: Update flake8 to 2.6.2
- Update the config files to search for to include setup.cfg and
  tox.ini. This was broken in 2.5.5 when we stopped passing config_file
  to our Style Guide
2016-06-26 00:22:41 +02:00
Florian Bruhin
d8a01d84b3 test requirements: Update CherryPy to 6.0.2
* Correct additional typos.
2016-06-24 11:17:03 +02:00
Florian Bruhin
2b285740d9 Update flake8 requirements
flake8 2.6.0
------------

- Switch to pycodestyle as all future pep8 releases will use that
  package name
- Allow for Windows users on select versions of Python to use --jobs and
  multiprocessing
- Update bounds on McCabe
- Update bounds on PyFlakes and blacklist known broken versions
- Handle new PyFlakes warning with a new error code: F405

flake8-copyright 0.1.1
----------------------

- Set line & column to 1,1 to avoid a flake8 error
- Support multi-year copyright notices

flake8-docstrings 0.2.8
-----------------------

- Try to import pydocstyle (not pycodestyle) as pep257
- Import either pycodestyle or pep8 to use stdin_get_value. This fixes
  the problem for newer Flake8’s (2.6.0+) and older ones.

pycodestyle 2.0.0
-----------------

Announcements:

- Repository renamed to `pycodestyle`
- Added joint Code of Conduct as member of PyCQA

Changes:

- Added tox test support for Python 3.5 and pypy3
- Added check E275 for whitespace on `from ... import ...` lines
- Added W503 to the list of codes ignored by default ignore list
- Removed use of project level `.pep8` configuration file

Bugs:

- Fixed bug with treating `~` operator as binary
- Identify binary operators as unary

Other changes
-------------

- Unpin mccabe as the flake8 requirement got updated
- Pin pep8 as an older version gets installed otherwise
- DIsable D403 warning (false-positivies)
2016-06-20 07:16:59 +02:00
Florian Bruhin
f8301b185e flake8 requirements: Update flake8 to 2.5.5
- Fix setuptools integration when parsing config files
- Don't pass the user's config path as the config_file when creating a
  StyleGuide
2016-06-15 09:02:15 +02:00
Florian Bruhin
b099f64efa flake8 requirements: Update pyparsing to 2.1.5
- Added ParserElement.split() generator method, similar to re.split().
  Includes optional arguments maxsplit (to limit the number of splits),
  and includeSeparators (to include the separating matched text in the
  returned output, default=False).

- Added a new parse action construction helper tokenMap, which will
  apply a function and optional arguments to each element in a
  ParseResults. So this parse action:

      def lowercase_all(tokens):
          return [str(t).lower() for t in tokens]
      OneOrMore(Word(alphas)).setParseAction(lowercase_all)

  can now be written:

      OneOrMore(Word(alphas)).setParseAction(tokenMap(str.lower))

  Also simplifies writing conversion parse actions like:

      integer = Word(nums).setParseAction(lambda t: int(t[0]))

  to just:

      integer = Word(nums).setParseAction(tokenMap(int))

  If additional arguments are necessary, they can be included in the
  call to tokenMap, as in:

      hex_integer = Word(hexnums).setParseAction(tokenMap(int, 16))

- Added more expressions to pyparsing_common:
  . IPv4 and IPv6 addresses (including long, short, and mixed forms
    of IPv6)
  . MAC address
  . ISO8601 date and date time strings (with named fields for year, month, etc.)
  . UUID (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
  . hex integer (returned as int)
  . fraction (integer '/' integer, returned as float)
  . mixed integer (integer '-' fraction, or just fraction, returned as float)
  . stripHTMLTags (parse action to remove tags from HTML source)
  . parse action helpers convertToDate and convertToDatetime to do custom parse
    time conversions of parsed ISO8601 strings

- runTests now returns a two-tuple: success if all tests succeed,
  and an output list of each test and its output lines.

- Added failureTests argument (default=False) to runTests, so that
  tests can be run that are expected failures, and runTests' success
  value will return True only if all tests *fail* as expected. Also,
  parseAll now defaults to True.

- New example numerics.py, shows samples of parsing integer and real
  numbers using locale-dependent formats:

    4.294.967.295,000
    4 294 967 295,000
    4,294,967,295.000
2016-06-14 09:48:14 +02:00
Florian Bruhin
278093afae Add requirements-qutebrowser.txt-raw 2016-06-08 00:03:07 +02:00
Florian Bruhin
4bae659fbe Re-add requests to pylint envs
This is needed because there's a script using requests
2016-06-08 00:02:43 +02:00
Florian Bruhin
cfb4ebb312 Add missing replace to requirements-pylint.txt-raw 2016-06-07 23:47:10 +02:00
Florian Bruhin
164d7bea4b recompile_requirements: Add replace command 2016-06-07 23:40:00 +02:00
Florian Bruhin
19037e8b75 Remove old .in requirements file 2016-06-07 23:32:35 +02:00
Florian Bruhin
81ccaff9c6 requirements: Update filter for Flask 2016-06-07 23:26:04 +02:00
Florian Bruhin
0819ed36f0 Update requirements README.md 2016-06-07 23:21:50 +02:00
Florian Bruhin
1c6b4da706 Use #@ as chars 2016-06-07 23:21:50 +02:00
Florian Bruhin
6249436bde Rename raw-requirements files
This hopefully means they're not picked up on requires.io.
2016-06-07 23:21:50 +02:00
Florian Bruhin
7571040316 Also ignore MarkupSafe dependency 2016-06-07 23:10:33 +02:00
Florian Bruhin
34a6451806 Add special #! commands to recompile_requirements 2016-06-07 23:08:14 +02:00
Florian Bruhin
136cb19814 reqs: Comment out ignored dependencies 2016-06-07 22:53:17 +02:00
Florian Bruhin
1a26c8c61f Add a script to compile requirement files 2016-06-07 22:45:59 +02:00
Florian Bruhin
b759f481c4 test requirements: Update decorator to 4.0.10
- Improved the documentation thanks to Tony Goodchild (zearin) who also
  provided a much better CSS than the one I was using.
2016-06-07 08:24:53 +02:00
Florian Bruhin
5004a571c4 test requirements: Update CherryPy to 6.0.1
* Correct typos in ``@cherrypy.expose`` decorators.
2016-06-07 08:24:12 +02:00
Florian Bruhin
64fc1a3277 Revert "test requirements: Add pdbpp"
This reverts commit c43bfffd5c.
It uses setuptools_scm which causes... problems.
2016-06-07 06:21:54 +02:00
Florian Bruhin
9787e54238 Revert "test requirements: Also add pdbpp dependencies"
This reverts commit d77b9bff49.
2016-06-07 06:21:50 +02:00
Florian Bruhin
d77b9bff49 test requirements: Also add pdbpp dependencies 2016-06-06 23:22:28 +02:00
Florian Bruhin
c43bfffd5c test requirements: Add pdbpp
pdb sometimes segfaults for some reason - pdbpp works fine and gives us
nicer debugging.
2016-06-06 23:20:44 +02:00
Florian Bruhin
a5f12430ad pylint reqs: Update pylint/astroid to 1.4.6/1.5.6
pylint:

* config files with BOM markers can now be read.
* epylint.py_run does not crash on big files, using .communicate()
  instead of .wait()

astroid:

* Fix a crash which occurred when the class of a namedtuple could not be
  inferred.
* Functional form of enums support accessing values through __call__.
* Brain tips for the ssl library.
2016-06-06 17:14:59 +02:00
Florian Bruhin
753036067d test requirements: Update CherryPy to 6.0.0
* Setuptools is now required to build CherryPy. Pure distutils installs
  are no longer supported. This change allows CherryPy to depend on
  other packages and re-use code from them. It's still possible to
  install pre-built CherryPy packages (wheels) using pip without
  Setuptools.
* Back out changes attempting to fix redirects with Unicode URLs, as it
  also had the unintended consequence of causing the 'Location' to be
  ``bytes`` on Python 3.
* ``cherrypy.expose`` now works on classes.
* ``cherrypy.config`` decorator is now used throughout the code
  internally.
2016-06-06 08:25:41 +02:00
Florian Bruhin
2df85e75cb test requirements: Update CherryPy to 5.6.0
* ``@cherrypy.expose`` now will also set the exposed
  attribute on a class.
* Rewrote all tutorials and internal usage to prefer
  the decorator usage of ``expose`` rather than setting
  the attribute explicitly.
* Removed test-specific code from tutorials.
2016-06-05 23:15:29 +02:00
Florian Bruhin
546c172e5e test requirements: Update CherryPy to 5.5.0
* Fix for filenames with semicolons and quote characters in filenames
  found in headers.
* Added decorator for registering tools.
* Use simpler encoding rules for SCRIPT_NAME and PATH_INFO environment
  variables in CherryPy Tree allowing non-latin characters to pass even
  when ``wsgi.version`` is not ``u.0``.
* Ensure that multipart fields are decoded even when cached in a file.
2016-06-05 20:44:04 +02:00
Florian Bruhin
24db93f3eb test req: Update pytest-mock to 1.1
- From this version onward, pytest-mock is licensed under the MIT
  license.
- Now the plugin also adds introspection information on differing call
  arguments when calling helper methods such as assert_called_once_with.
  The extra introspection information is similar to pytest's and can be
  disabled with the mock_traceback_monkeypatch option.
- mocker.stub() now allows passing in the name for the constructed Mock
  object instead of having to set it using the internal _mock_name
  attribute directly. This is useful for debugging as the name is used
  in the mock's repr string as well as related assertion failure
  messages.
- Monkey patching mock module for friendlier tracebacks is automatically
  disabled with the --tb=native option. The underlying mechanism used to
  suppress traceback entries from mock module does not work with that
  option anyway plus it generates confusing messages on Python 3.5 due
  to exception chaining.
- mock.call is now aliased as mocker.call for convenience.
2016-06-02 11:19:22 +02:00
Florian Bruhin
1b9a0367e7 flake8 req: Update sortedcontainers to 1.5.3 2016-06-02 11:18:49 +02:00
Florian Bruhin
a19bb40b50 requirements: Update codecov to 2.0.5
- fix detecting merge commits on all CI, not just Travis
- Use %20 for encoding spaces [appveyor]
2016-06-02 11:16:52 +02:00
Florian Bruhin
b3c91d4b81 tox: Update pytest to 2.9.2
* skip tests where one parameterize dimension was empty
* Fix Xfail does not work with condition keyword argument.
* Fix win32 path issue when puttinging custom config file with absolute
  path in ``pytest.main("-c your_absolute_path")``.
* Fix maximum recursion depth detection when raised error class is not
  aware of unicode/encoded bytes.
* Fix ``pytest.mark.skip`` mark when used in strict mode.
* Minor improvements and fixes to the documentation.
* Fix ``--fixtures`` to show all fixture definitions as opposed to just
  one per fixture name.
2016-05-31 23:41:24 +02:00
Florian Bruhin
5c02f3655a requirements: Also update mccabe for pylint-master 2016-05-31 07:57:53 +02:00
Florian Bruhin
100d284cdd requirements: Update mccabe to 0.5.0
- PyCon 2016 PDX release
- Add support for Flake8 3.0
2016-05-30 23:50:11 +02:00
Florian Bruhin
0c611d4d85 requirements: Update flake8-future-import to 0.4.1
- Do not ignore imports which are present and have been added after the
  minimum version
- Ignore imports which became mandatory with the minimum version
2016-05-30 23:47:35 +02:00
Florian Bruhin
afb88a9560 requirements: Update flake8-future-import to 0.4.0
- Add two older future imports
- Issue an error when a future import does not exist
- Define which is the oldest Python version to be supported so that
  already mandatory features can be ignored and not yet supported
  features default to forbidden (ignoring the lower error code).
- Use return code of 1 if errors occurred
2016-05-30 12:57:57 +02:00
Florian Bruhin
424efec8a9 travis: Use Python 3.5 on Ubuntu Xenial 2016-05-30 00:03:40 +02:00
Florian Bruhin
3a0a30597e Dockerfile: Install dbus 2016-05-29 23:25:46 +02:00
Florian Bruhin
e3556f8fe0 Add a Ubuntu Xenial Dockerfile 2016-05-29 23:14:54 +02:00
Florian Bruhin
2e4c0c6599 Run dbus-uuidgen in Ubuntu Wily Dockerfile
Otherwise the tests will fail with:

  INVALID: process 975: D-Bus library appears to be incorrectly set up; failed to read machine uuid: UUID file '/etc/machine-id' should contain a hex string of length 32, not length 0, with no other text
  INVALID: See the manual page for dbus-uuidgen to correct this issue.
2016-05-29 23:14:10 +02:00
Florian Bruhin
800d069764 requirements: Blacklist Flask 0.11.0
See https://github.com/pallets/flask/issues/1825
2016-05-29 18:20:48 +02:00
Florian Bruhin
f10754fa77 Remove MarkupSafe pin in requirements-tests.txt
We already have that pinned in requirements.txt
2016-05-29 17:50:13 +02:00
Florian Bruhin
7180a6df0b requirements: Update pytest dependency pins
This adds MarkupSafe and removes termcolor and wheel.
2016-05-29 17:34:19 +02:00
Florian Bruhin
d008b2a86c requirements: Pin all pylint dependencies 2016-05-29 17:34:16 +02:00
Florian Bruhin
6f6303e0a6 Use requirements files for tox dependencies
While this makes things a little more complicated and means we'll need to use
`-r` to recreate tox environments, it has several advantages:

- Full support from requires.io (including PRs)
- Workaround for https://bitbucket.org/hpk42/tox/issues/332/ so we can update
  virtualenv/pip
2016-05-29 16:53:54 +02:00
Florian Bruhin
9529d55649 Remove misc/qt_menu.nib
This was needed for cx_Freeze on OS X which we don't use anymore.
2016-05-29 16:24:16 +02:00
Florian Bruhin
1e55db0630 Follow the American way(tm) of spelling things 2016-05-29 10:57:41 +02:00
Florian Bruhin
b065d8efcd pyinstaller: Set NSHighResolutionCapable = True
This means qutebrowser will show up correctly on HiDPI/Retina screens
without being pixelated.
2016-05-28 23:20:00 +02:00
Florian Bruhin
90fa2a50ce pyinstaller: Use qutebrowser/__main__.py
When we use qutebrowser.py, PyInstaller 3.2 gets confused
somehow (because of the name conflict with qutebrowser/ maybe?) and
doesn't do anything when running the bundled app.

With qutebrowser/__main__.py the generated filename is still correct and
it actually works.
2016-05-28 23:18:29 +02:00
Florian Bruhin
afcb018ee2 Fix some spelling mistakes
Found via http://jwilk.net/software/mwic
2016-05-27 12:07:00 +02:00
Florian Bruhin
a7ece80d34 Merge branch 'pyinstaller' 2016-05-13 06:21:28 +02:00
Florian Bruhin
cd5591040e Move qutebrowser.rcc to misc/ 2016-04-14 17:59:45 +02:00
Florian Bruhin
b3dfa5757e Docker: Install libjs-pdf on Debian/Ubuntu 2016-04-10 18:09:17 +02:00
Florian Bruhin
bfb4f20510 pyinstaller: Build a single-executable app 2016-04-07 08:53:12 +02:00
Florian Bruhin
460f613fec pyinstaller: Set icon 2016-04-07 08:53:12 +02:00
Florian Bruhin
2f8ce31e1a pyinstaller: Add git-commit-id file 2016-04-07 08:53:12 +02:00
Florian Bruhin
f24a721e55 pyinstaller: Include data files
This makes the following things work:

- Error pages
- Caret mode
- pdfjs
- :help
2016-04-07 08:53:12 +02:00
Florian Bruhin
b505c65873 pyinstaller: Add basic qutebrowser.spec 2016-04-07 08:53:07 +02:00
Florian Bruhin
2aef8913ec travis: Don't install recommended packages via apt
This passes --no-install-recommends both for Dockerfiles and Travis
itself.
2016-04-06 08:22:41 +02:00
Kevin Velghe
35fa7b3989 Implement libsecret password backend 2016-04-01 22:52:32 +02:00
Florian Bruhin
d15a3c6de8 Update cheatsheet 2016-03-31 07:10:13 +02:00
Florian Bruhin
95d1f48b01 docker: Use non-debug packages for Archlinux
Upstream Arch now updated to Qt 5.6 (which means it works with Xvfb), and using
debug packages means the image is a lot bigger and builds slower, so let's use
the normal packages from [extra].
2016-03-29 07:31:11 +02:00
Kevin Velghe
11075457de Complete url's in openfeeds 2016-03-24 22:13:03 +01:00
Florian Bruhin
0944293fdd Merge branch 'password_fill' of https://github.com/t-wissmann/qutebrowser into t-wissmann-password_fill 2016-03-17 22:05:13 +01:00
Florian Bruhin
a2b9749dbf docker: Don't install base-devel on Arch 2016-03-16 06:57:44 +01:00
Florian Bruhin
0bc31e5373 docker: Also run on Ubuntu Wily on Travis 2016-03-15 21:39:30 +01:00
Florian Bruhin
bc6bf82301 docker: Minimize Debian Jessie image 2016-03-15 21:08:19 +01:00
Florian Bruhin
6d225a7858 Set DEBIAN_FRONTEND=noninteractive for Debian Dockerfile 2016-03-15 19:48:43 +01:00
Florian Bruhin
bc080f047e Add Dockerfile for Archlinux 2016-03-15 19:16:11 +01:00
Florian Bruhin
3ec7a01590 Add Dockerfile for Debian jessie 2016-03-15 19:14:37 +01:00
Thorsten Wißmann
26f2ae5ad0 Do proper javascript escaping in password_fill 2015-12-11 17:04:50 +01:00
Thorsten Wißmann
9592eb0c69 Add documentation in password_fill
Describe usage and configuration. Also allow "login:" as a prefix for
login name in pass entries.
2015-12-11 16:54:16 +01:00
Tobias Werth
e4b809927f Escape password properly in generated JS. 2015-12-11 16:23:47 +01:00
Thorsten Wißmann
497a6e0720 Fixup url simplifier loop
Now, the loop which successively simplifies the url, always terminates.
2015-12-09 23:26:29 +01:00
Thorsten Wißmann
ffdc0f664f Ask for confirmation on fuzzy entry matching 2015-12-09 23:26:29 +01:00
Thorsten Wißmann
fb5e6e6c35 More sane defaults
- Remove Port from URL
  - Use zenity per default
  - Allow customization of handling of no entries are found
2015-12-09 23:26:29 +01:00
Thorsten Wißmann
d73491b0c8 Add password_fill userscript
Add a configurable userscript that fills login forms (i.e. the fiels
"Username" and "Password) of websites using a configurable backend where
the actual passwords are stored. The only backend yet is using the
password store "pass".
2015-12-09 23:26:29 +01:00
Florian Bruhin
e010602791 Remove outdated comment. 2015-11-17 19:30:08 +01:00
Halfwit
7822a33975 Finalizing comments and arguments passed in 2015-11-17 08:41:20 -07:00
Halfwit
09999654e2 Adding back second usage comment 2015-11-17 07:56:40 -07:00
Halfwit
773982ad23 The-Compiler's changes 2015-11-17 07:52:02 -07:00
Michael
2a9d56790f Create Openpage
Wrapper script to pass options in to qutedmenu
2015-11-11 23:22:31 -07:00
Michael
f22ccae6fd Create qutedmenu
Bemenu integration for Qutebrowser
2015-11-11 23:21:33 -07:00
Thorsten Wißmann
855f8402c6 open_download: Warn if download dir is empty 2015-09-17 10:32:26 +02:00
Thorsten Wißmann
9e25e3b96b open_download: Allow download dir to be a symlink 2015-09-17 10:32:26 +02:00
Thorsten Wißmann
b8f200b370 Add open_download userscript 2015-09-17 10:32:17 +02:00
Florian Bruhin
fe16b95f00 Fix typo. 2015-09-16 21:29:03 +02:00
Florian Bruhin
a01c172bc4 Merge branch 'view_in_mpv' of https://github.com/t-wissmann/qutebrowser into t-wissmann-view_in_mpv 2015-09-16 21:26:16 +02:00
Claude
d054fda4ac making userid wildcardish 2015-09-15 10:11:06 +02:00
Claude
5130be4495 workaround for debian, need additional permissions 2015-09-15 10:03:54 +02:00
Thorsten Wißmann
bbdec1779a Add check that view_in_mpv is run as a userscript
Also fix another typo.
2015-09-03 18:02:22 +02:00
Thorsten Wißmann
de5cdf6f0f Also hide <embed> tags
But only hide those tags that aren't children (or descendants) of other
tags that get replaced anyway. That is needed because sometimes, flash
videos are in <embed> tags, sometimgs in <object> tags and sometimes in
<embed> tags within <object> tags.

Furthermore enforce our "click here" link to have transparent background
(and in future: remove as many properties from website specific CSS
stylesheets).
2015-09-03 16:34:30 +02:00
Thorsten Wißmann
e5b7fdb565 Fix typos spotted by The-Compiler 2015-09-02 17:20:51 +02:00
Thorsten Wißmann
197feade32 Also replace flash videos
This means: also replace <object> tags and put the replacement message
even higher in the z-order. (Latter had to be done to make it the
replacement visible on espn _dot_ com)
2015-09-02 17:18:44 +02:00
Thorsten Wißmann
fe6a6c33ae Add view_in_mpv userscript 2015-09-02 15:59:52 +02:00
jnphilipp
6ffcb387eb Incorporated The-Compilers suggested chanes. 2015-09-02 14:02:24 +02:00
jnphilipp
1cbc555933 Rewrote userscript to use BeautifulSoup. 2015-09-01 22:08:37 +02:00
jnphilipp
8a1a090dea Added userscript to open feed links. 2015-08-31 22:45:17 +02:00
Florian Bruhin
ad181ec7eb Spelling fix on cheatsheet. 2015-05-19 08:58:27 +02:00
Florian Bruhin
cc88451003 Update cheatsheet. 2015-05-19 06:43:42 +02:00
Florian Bruhin
785f948bc7 Correct typo. 2015-05-12 07:49:53 +02:00
Florian Bruhin
38ac2c6598 Merge branch 'master' of https://github.com/Zach-Button/qutebrowser into Zach-Button-master 2015-05-12 07:49:29 +02:00
Florian Bruhin
9ceb43ec44 Make F (:hint tab) honour background-tabs.
Fixes #621.
2015-05-06 23:25:42 +02:00
Zach-Button
d496ea2d59 Update dmenu_qutebrowser 2015-04-28 11:02:45 -06:00
Zach-Button
329030e913 Update qutebrowser_viewsource 2015-04-24 14:05:27 -06:00
Zach-Button
205f37fe09 Update dmenu_qutebrowser 2015-04-24 14:04:27 -06:00
Zach-Button
049955dfd5 Change path to use mktemp
Path now uses mktemp instead of timestamp
2015-04-21 16:12:05 -06:00
Zach-Button
5359463d79 Add misc/userscripts
- Added misc/userscripts/dmenu_qutebrowser
- Added misc/userscripts/qutebrowser_viewsource
2015-04-21 14:52:43 -06:00
Florian Bruhin
bd9168fdfe Add qt_menu.nib for freeze.py on OS X. 2015-04-13 14:15:40 +02:00
Florian Bruhin
217e788f4b Add 'cd' shortcut to clear downloads. 2015-04-04 15:02:08 +02:00
Regina Hug
0712037a52 Add 'R' to cheatsheet. 2015-01-02 21:22:03 +01:00
Regina Hug
bbff9cb4f0 Add label "(6)" to cheatsheet.
Fixes #348.
2014-12-24 23:45:22 +01:00
Florian Bruhin
ce819db723 Add cheatsheet svg. 2014-12-14 19:23:52 +01:00
Florian Bruhin
fd2fc4e72f Move apparmor from contrib to misc. 2014-12-14 19:23:44 +01:00