summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOliver Bestwalter <oliver.bestwalter@avira.com>2016-06-24 18:11:02 +0200
committerOliver Bestwalter <oliver.bestwalter@avira.com>2016-06-24 18:11:02 +0200
commitd2d51df82f1490699d1ef74dd953e3b2d8838d4f (patch)
tree5d8f70f1fcf626be1505dcc9a4f16e10f52de6d1
parent3151e3b016c46c6f183c6383a079eea343b1ef6d (diff)
downloadtox-d2d51df82f1490699d1ef74dd953e3b2d8838d4f.tar.gz
organize the notes a bit
-rw-r--r--doc/drafts/extend-envs-and-packagebuilds.md103
1 files changed, 37 insertions, 66 deletions
diff --git a/doc/drafts/extend-envs-and-packagebuilds.md b/doc/drafts/extend-envs-and-packagebuilds.md
index 140ecb0..d7a6d36 100644
--- a/doc/drafts/extend-envs-and-packagebuilds.md
+++ b/doc/drafts/extend-envs-and-packagebuilds.md
@@ -1,75 +1,54 @@
# Extension of environment handling and building packages
-Goal drive building of packages and the environments needed to test them, exercising the tests and report the results for more than just virtualenvs and python virtualenvs
+*Notes from a discussion at the pytest sprint 2016*
-Necessary to implement:
+Goal: drive building of packages and the environments needed to test them, exercising the tests and report the results for more than just virtualenvs and python virtualenvs
-* sdist refactoring (con concept for multiple package creations (e.g. wheels, conda, ...))
-* environment system extension
-
-## Use case: conda
-
-* general package def (how to build the package)
-* general environment def (how to build an environment)
-* matching environments to package definition (at package definition level) (e.g {py27,py34}-{venv,conda,pyenv}-[...])
-
-## Problems
+### Problems
+* No concept of mapping environments to specific packages (versioned packages)
+* no control over when it happens for specific environment
+* no control over how it happens (e.g. which python interpreter is used to create the package)
+* No way of triggering build only if there is an environment that needs a specific build trigger it only if an environment actually needs it
* package definition that might match on everything might be a problem for which environments test? Not clear?
-* sdist would need a "sdist" factor to only be matched against virtualenvs
-
-## section examples
-
-envlist={py,27,py34}-{win32, linux}-{conda,virtualenv}
-[packagedef:sdist]
-# how to build (e.g. {py27,py34}-{sdist})
-# how to match (e.g. {py27,py34}-{sdist})
+### Solution
-[packagedef:conda]
-# how to build (e.g. {py27,py34}-{conda})
-# how to match (e.g. {py27,py34}-{conda})
+It should be possible to build other kinds of packages than just the standard sdist and it should also be possible to create different kinds of builds that can be used from different environments. To make this possible there has to be some concept of factorized package definitions and a way to match these factorized builds to environments with a similar way of matching like what is in place already to generate environments. sdist would for example would match to a "sdist" factor to only be matched against virtualenvs as the default.
-[packagedef:wheel]
-# how to build
-# how to match
+This could then be used to hae virtualenv, conda, nixos, docker, pyenv, rpm, deb, etc. builds and tie them to concrete test environments.
-## Next release (3.0)
+To summarize - we would need a:
-* ship what we have
-* Plan for next major release
+ * packagedef (how to build a package)
+ * envdef (how to build an environment)
+ * way of matching envs to concrete packages (at package definition level) (e.g `{py27,py34}-{win32,linux}-{venv,conda,pyenv}-[...]`)
-## sdist refatoring
+## Beginnings of configuration examples (not thought out yet)
-* Needs concept of mapping environments to specific packages (versioned packages)
-* no control over when it happens for specific environment
-* no control over how it happens (e.g. which python interpreter is used to create the package)
-* trigger it only if an environment actually needs it
+ [tox]
+ envlist={py,27,py34}-{win32, linux}-{conda,virtualenv}
+
+ [packagedef:sdist]
+ # how to build (e.g. {py27,py34}-{sdist})
+ # how to match (e.g. {py27,py34}-{sdist})
+
+ [packagedef:conda]
+ # how to build (e.g. {py27,py34}-{conda})
+ # how to match (e.g. {py27,py34}-{conda})
+
+ [packagedef:wheel]
+ # how to build
+ # how to match
-### Ideas
-
-* Simplify for the common case: most packages are universal, so it should be simple
-one to one relationship from environment to directory
-* Floris: metadata driven. Package has metadata to the env with what env it is compatible
-* Holger: configuration driven. explicitly configuring which packages should be used (default sdist to be used, overridable by concrete env)
-* Ronny: "package definitions" (this pacakge, this setup command) + matching definitions (matching packages (with wldcards) for environemnts)
-
-## integrate detox
+#### integrate detox
* reporting in detox is minimal (would need to improve)
* restricting processes would be necessary depending on power of the machine
(creating 16 processe on a dual core machine might be overkill)
* port it from eventlets to threads?
-## Extend environment integrations
-
-Different kinds and combinations of environments
-
-* Virtualenv, conda, nixos, docker, pyenv, rpm, deb, npm ...
-* Code needs to change a lot
-* need to be documunted properly
-
-### conda integration
+### Concrete use case conda integration (started by Bruno)
* Asynchronicity / detox not taken into account yet
* Conda activation might do anything (change filesys, start DBs)
@@ -77,19 +56,11 @@ Different kinds and combinations of environments
* Packages would need to be created (from conda.yml)
* Activation is a problem
-### pyenv integration
-
-* ?
-
-# Questions
-
-* list all environments from command line (not just the ones from envlist)
-# Ideas
+### Unsorted discussion notes
-* sync command line options and actual documentation
-* General way of running tests in an already existing environment
-
-# Problems
-
-* Per python version wheels are not taken into account yet
+* Simplify for the common case: most packages are universal, so it should be simple
+one to one relationship from environment to directory
+* Floris: metadata driven. Package has metadata to the env with what env it is compatible
+* Holger: configuration driven. explicitly configuring which packages should be used (default sdist to be used, overridable by concrete env)
+* Ronny: "package definitions" (this package, this setup command) + matching definitions (matching packages (with wildcards) for environments)