aboutsummaryrefslogtreecommitdiffstats
path: root/docs
Commit message (Expand)AuthorAgeFilesLines
* docs: update remaining references to functions.shFelix Fietkau2012-12-202-3/+3
* update switch documentationLuka Perkov2012-10-121-1/+22
* update VLAN tag exampleLuka Perkov2012-10-121-2/+4
* fix styleLuka Perkov2012-10-121-13/+11
* kamikaze has been released long agoImre Kaloz2011-02-112-5/+4
* docs: fix a counting failFelix Fietkau2010-05-291-1/+1
* Add documentation for passphrase option.Felix Fietkau2009-09-241-0/+8
* implement doth (802.11h) and wmm (802.11e) options for broadcom as well; upda...Jo-Philipp Wich2009-09-221-0/+10
* configure the IPv6 from /etc/config/network and remove 6scripts's prefix opti...Florian Fainelli2009-07-051-3/+0
* add a short note on how to use OpenWrt for daily work, covering the use of qu...Florian Fainelli2009-06-283-0/+115
* comment and fix some parts of the documentation, thanks to Harsh TrivediFlorian Fainelli2009-06-083-5/+37
* a couple of small fixes in the Wireless documentationFlorian Fainelli2009-05-221-12/+25
* build: update svn url from https:// to svn://Andy Boyett2009-05-201-1/+1
* get rid of $Id$ - it has never helped us and it has broken too many patches ;)Felix Fietkau2009-04-171-3/+0
* document a little bit more the rationale of the 6bridge scriptFlorian Fainelli2009-04-021-0/+2
* allow mac80211 devices to be configured to do 802.11s, requires iwFlorian Fainelli2009-02-261-1/+9
* wireless.tex: update docs to reflect txpower moveAndy Boyett2009-01-311-2/+6
* document the BUILDONLY optionFelix Fietkau2009-01-131-0/+3
* Make the doc slightly more complete and add notes on how to add a new target ...Florian Fainelli2009-01-064-3/+173
* hostapd,madwifi: rename agmode option to hwmode. 11a and 11g aren't the only ...Andy Boyett2008-12-311-4/+4
* build.tex: fix formatting of example in build environments sectionAndy Boyett2008-12-301-1/+1
* update wireless documentation to reflect broadcom config changesJo-Philipp Wich2008-11-161-10/+16
* Document how to build binary ipkgsFlorian Fainelli2008-09-301-0/+53
* Document madwifi specific diversity and antenna settings (#3889Florian Fainelli2008-09-271-0/+8
* Add 802.1x client configuration support and corresponding documentation (#2069)Florian Fainelli2008-08-111-0/+33
* Support encrypted WDS connections (#2463)Florian Fainelli2008-08-091-1/+62
* add script for managing 'build environments' (.config+files/), including docu...Felix Fietkau2008-08-061-0/+57
* cosmetic fix for docs/ prereq checkFelix Fietkau2008-08-061-1/+1
* Update wireless documentationFlorian Fainelli2008-07-261-6/+29
* Document a bit more about IPv6 configurationFlorian Fainelli2008-07-211-2/+19
* fix a small dep bug in the docs/ dirFelix Fietkau2008-06-091-1/+2
* Fix docs build from a clean checkout, closes #2975Andy Boyett2008-01-071-1/+2
* Trivial patch to correct typos and spelling errors in OpenWRT documentation.\...Florian Fainelli2008-01-062-11/+11
* document the feeds systemFelix Fietkau2007-12-281-6/+8
* update build directory pathsFelix Fietkau2007-12-281-10/+10
* update target namesFelix Fietkau2007-12-281-5/+5
* remove some obsolete stuffFelix Fietkau2007-12-281-6/+0
* remove old 'Submitting patches' textFelix Fietkau2007-12-281-15/+0
* add SubmittingPatches document to docs/Felix Fietkau2007-12-283-1/+56
* START is no longer optional for /etc/rc.common based init scriptsFelix Fietkau2007-12-281-2/+1
* document Build/UninstallDevFelix Fietkau2007-12-281-0/+6
* document Build/InstallDevFelix Fietkau2007-12-281-0/+13
* add .gitignore for docs/Felix Fietkau2007-12-281-0/+15
* Allow specifying static IPv6 gateways (#2710)Florian Fainelli2007-11-161-0/+1
* Document the IPv6 connectivity with OpenWrt.Florian Fainelli2007-10-262-1/+47
* apply latex style patch posted on openwrt-devel@listsFelix Fietkau2007-09-292-7/+11
* Fix the option dns usages (#2174)Florian Fainelli2007-08-061-0/+2
* document config_foreach, close #2162Felix Fietkau2007-08-041-0/+19
* fix a few overfull hboxes, remove some redundant stuffFelix Fietkau2007-08-043-20/+12
* wifi docs: fix a few typos and inconsistencies, add examplesFelix Fietkau2007-08-041-14/+68
pan>version_info < (3, 3): requirements.append("ipaddress") if platform.python_implementation() == "PyPy": if sys.pypy_version_info < (2, 6): raise RuntimeError( "cryptography 1.0 is not compatible with PyPy < 2.6. Please " "upgrade PyPy to use this library." ) else: requirements.append("cffi>=1.1.0") setup_requirements.append("cffi>=1.1.0") # If you add a new dep here you probably need to add it in the tox.ini as well test_requirements = [ "pytest", "pretend", "iso8601", "hypothesis", ] # If there's no vectors locally that probably means we are in a tarball and # need to go and get the matching vectors package from PyPi if not os.path.exists(os.path.join(base_dir, "vectors/setup.py")): test_requirements.append(VECTORS_DEPENDENCY) def cc_is_available(): return sys.platform == "darwin" and list(map( int, platform.mac_ver()[0].split("."))) >= [10, 8, 0] backends = [ "openssl = cryptography.hazmat.backends.openssl:backend" ] if cc_is_available(): backends.append( "commoncrypto = cryptography.hazmat.backends.commoncrypto:backend", ) class PyTest(test): def finalize_options(self): test.finalize_options(self) self.test_args = [] self.test_suite = True # This means there's a vectors/ folder with the package in here. # cd into it, install the vectors package and then refresh sys.path if VECTORS_DEPENDENCY not in test_requirements: subprocess.check_call( [sys.executable, "setup.py", "install"], cwd="vectors" ) pkg_resources.get_distribution("cryptography_vectors").activate() def run_tests(self): # Import here because in module scope the eggs are not loaded. import pytest test_args = [os.path.join(base_dir, "tests")] errno = pytest.main(test_args) sys.exit(errno) def keywords_with_side_effects(argv): """ Get a dictionary with setup keywords that (can) have side effects. :param argv: A list of strings with command line arguments. :returns: A dictionary with keyword arguments for the ``setup()`` function. This setup.py script uses the setuptools 'setup_requires' feature because this is required by the cffi package to compile extension modules. The purpose of ``keywords_with_side_effects()`` is to avoid triggering the cffi build process as a result of setup.py invocations that don't need the cffi module to be built (setup.py serves the dual purpose of exposing package metadata). All of the options listed by ``python setup.py --help`` that print information should be recognized here. The commands ``clean``, ``egg_info``, ``register``, ``sdist`` and ``upload`` are also recognized. Any combination of these options and commands is also supported. This function was originally based on the `setup.py script`_ of SciPy (see also the discussion in `pip issue #25`_). .. _pip issue #25: https://github.com/pypa/pip/issues/25 .. _setup.py script: https://github.com/scipy/scipy/blob/master/setup.py """ no_setup_requires_arguments = ( '-h', '--help', '-n', '--dry-run', '-q', '--quiet', '-v', '--verbose', '-V', '--version', '--author', '--author-email', '--classifiers', '--contact', '--contact-email', '--description', '--egg-base', '--fullname', '--help-commands', '--keywords', '--licence', '--license', '--long-description', '--maintainer', '--maintainer-email', '--name', '--no-user-cfg', '--obsoletes', '--platforms', '--provides', '--requires', '--url', 'clean', 'egg_info', 'register', 'sdist', 'upload', ) def is_short_option(argument): """Check whether a command line argument is a short option.""" return len(argument) >= 2 and argument[0] == '-' and argument[1] != '-' def expand_short_options(argument): """Expand combined short options into canonical short options.""" return ('-' + char for char in argument[1:]) def argument_without_setup_requirements(argv, i): """Check whether a command line argument needs setup requirements.""" if argv[i] in no_setup_requires_arguments: # Simple case: An argument which is either an option or a command # which doesn't need setup requirements. return True elif (is_short_option(argv[i]) and all(option in no_setup_requires_arguments for option in expand_short_options(argv[i]))): # Not so simple case: Combined short options none of which need # setup requirements. return True elif argv[i - 1:i] == ['--egg-base']: # Tricky case: --egg-info takes an argument which should not make # us use setup_requires (defeating the purpose of this code). return True else: return False if all(argument_without_setup_requirements(argv, i) for i in range(1, len(argv))): return { "cmdclass": { "build": DummyBuild, "install": DummyInstall, "test": DummyPyTest, } } else: cffi_modules = [ "src/_cffi_src/build_openssl.py:ffi", "src/_cffi_src/build_constant_time.py:ffi", "src/_cffi_src/build_padding.py:ffi", ] if cc_is_available(): cffi_modules.append("src/_cffi_src/build_commoncrypto.py:ffi") return { "setup_requires": setup_requirements, "cmdclass": { "test": PyTest, }, "cffi_modules": cffi_modules } setup_requires_error = ("Requested setup command that needs 'setup_requires' " "while command line arguments implied a side effect " "free command or option.") class DummyBuild(build): """ This class makes it very obvious when ``keywords_with_side_effects()`` has incorrectly interpreted the command line arguments to ``setup.py build`` as one of the 'side effect free' commands or options. """ def run(self): raise RuntimeError(setup_requires_error) class DummyInstall(install): """ This class makes it very obvious when ``keywords_with_side_effects()`` has incorrectly interpreted the command line arguments to ``setup.py install`` as one of the 'side effect free' commands or options. """ def run(self): raise RuntimeError(setup_requires_error) class DummyPyTest(test): """ This class makes it very obvious when ``keywords_with_side_effects()`` has incorrectly interpreted the command line arguments to ``setup.py test`` as one of the 'side effect free' commands or options. """ def run_tests(self): raise RuntimeError(setup_requires_error) with open(os.path.join(base_dir, "README.rst")) as f: long_description = f.read() setup( name=about["__title__"], version=about["__version__"], description=about["__summary__"], long_description=long_description, license=about["__license__"], url=about["__uri__"], author=about["__author__"], author_email=about["__email__"], classifiers=[ "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX", "Operating System :: POSIX :: BSD", "Operating System :: POSIX :: Linux", "Operating System :: Microsoft :: Windows", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Security :: Cryptography", ], package_dir={"": "src"}, packages=find_packages( where="src", exclude=["_cffi_src", "_cffi_src.*", "tests", "tests.*"] ), include_package_data=True, install_requires=requirements, tests_require=test_requirements, # for cffi zip_safe=False, ext_package="cryptography.hazmat.bindings", entry_points={ "cryptography.backends": backends, }, **keywords_with_side_effects(sys.argv) )