summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* tests/integration: Use a minimal custom base sysrootsam/integration-tests-alpineSam Thursfield2018-02-139-29/+83
| | | | | | | | | | | | | | | We have been using the Freedesktop SDK binaries to provide a base system to run the integration tests. This works OK but it weighs in at 985MB of content, and there is no simple way to customize it so that we only download the bits we actually need. This commit changes the tests to use a custom sysroot based on the Alpine Linux distribution. The sysroot is 155MB unpacked, and packs down to a 27MB .tar.xz. This speeds up the integration tests significantly as we greatly reduce the amount of network traffic required and the amount of data that gets copied around when creating the staging area.
* tests/integration: Use a simpler CMake test projectSam Thursfield2018-02-135-31/+17
| | | | | | | | | | | The 'step7' tutorial was fine, but it requires a C++ compiler to build. I have replaced it with a simpler testcase which is based on the existing amhello testcase. This means that the integration test suite no longer requires a C++ compiler, and in practice this can allow us to avoid depending on the GNU C/C++ compilers altogether and instead use the vastly smaller Tiny C Compiler.
* _frontend/cli.py: Check for invalid --track-except or --track-savePhillip Smyth2018-02-131-0/+8
| | | | | | | Report error when --track-except or --track-save is specified without --track or --track-all. Fixes #181
* _frontend/cli.py: Improve closing of non-existing workspacePhillip Smyth2018-02-131-0/+5
| | | | Fixes #182
* source.py: fix comment typoAngelos Evripiotis2018-02-131-1/+1
|
* doc: consistent source staging dir docAngelos Evripiotis2018-02-133-0/+9
| | | | | All source plugins respond to the 'directory' key, so add the doc for it to those that didn't have it.
* source.py: Fix typo in workspace warningJürg Billeter2018-02-131-1/+1
| | | | Fixes #250
* scheduler.py: Do not prematurely terminate loop after skipping jobsjuerg/schedulerJürg Billeter2018-02-121-1/+7
| | | | | | | | It is possible that Queue.process_ready() skips jobs without starting a job. Pull the skipped jobs forward through the queues and process them instead of prematurely terminating the loop due to lack of active jobs. Fixes #236
* .gitlab-ci.yml: Fix INTEGRATION_CACHEJürg Billeter2018-02-121-5/+2
| | | | | The working directory of the runner is /builds/BuildStream/buildstream, not /builds/BuildStream.
* test: Add tests that bzr workspace initialization acts as expectedJonathan Maw2018-02-121-0/+19
|
* bzr: Implement init_workspaceJonathan Maw2018-02-121-0/+15
| | | | | This will checkout a branch from the cache, and switch its parent branch to the url and ref that the source came from
* utils.py: Wrap calls to os.path.realpath() in an LRU cacheSam Thursfield2018-02-121-9/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | The os.path.realpath() function is expensive and we call it many times, to the point that os.path.realpath() calls make up around 40% of the total time spent in Element.stage_artifact(). The cleanest way to fix this is with a `functools.lru_cache()` wrapper that caches recently used values. None of the code in question can be removed (as the tests added in the previous commit will demonstrate). I tested this by running `bst shell base/base-system.bst true` in the GNOME modulesets project. o Without this patch there are 240,019 calls os.path.realpath() o With this patch there are 10,379 calls to os.path.realpath() o If we increase the cache size to 128 items, there are 10,359 calls to os.path.realpath(). o If we reduce the cache size to 32 items, there are 10,426 calls. o In all cases the number of *unique* calls is 10,327. This fixes issue #174.
* Add integration tests for edge cases involving symlinks and overlapsSam Thursfield2018-02-125-0/+152
|
* projectconf.rst: clarify 'type option'options_typeAngelos Evripiotis2018-02-111-2/+2
| | | | | | | Reword 'Flags type options' slightly for more clarity. We use 'option type' to refer to these thingies elsewhere, adjust 'arch' to be the same way.
* Refactor CLI importscompletion-optimizationsTristan Maat2018-02-085-700/+721
| | | | | This reduces the number of unconditional imports, mainly to speed up bash completion.
* Add a 'path' config option to junction elementsSam Thursfield2018-02-082-1/+16
| | | | | | | | | | | | | | | | | | | This makes it possible to depend on a project which is in a subdirectory of a Git repository. The error message given when the expected project.conf file is not found has also been improved. Previously the error would look like this: Error loading pipeline: Could not find file at /home/sam/.cache/buildstream/build/freedesktop-sdk-junction-rvmn17s2/project.conf This is giving the path of an internal temporary directory where the foreign project's source is checked out. The new error gives more information: Error loading pipeline: Could not find the project.conf file for junction element at freedesktop-sdk-junction.bst [line 1 column 0]. Expecting a project at path '.' within git source at freedesktop-sdk-junction.bst [line 4 column 2]
* Add test for project-specific artifact shares with junctionsJürg Billeter2018-02-0810-0/+121
|
* _artifactcache: Use project-specific remotes for subprojectsJürg Billeter2018-02-087-52/+128
|
* Add list of projects to ContextJürg Billeter2018-02-082-0/+23
|
* Add junction testsJürg Billeter2018-02-0847-0/+435
|
* Add junction support for subprojectsJürg Billeter2018-02-0813-33/+400
| | | | | This introduces junctions as a new kind of elements to allow dependencies to cross project boundaries.
* _loader.py: Pass Loader instance to LoadElementJürg Billeter2018-02-081-4/+4
| | | | Loader access will be required for junctions.
* Add project attribute to MetaElementJürg Billeter2018-02-083-7/+10
| | | | With junctions, elements may be loaded from multiple projects.
* Pass Project instance to LoaderJürg Billeter2018-02-087-29/+33
| | | | Project access will be required for junctions.
* Move element and source factories from Pipeline to ProjectJürg Billeter2018-02-084-30/+31
| | | | Element and source factories use a project-specific search path.
* Move cli_options from Context to ProjectJürg Billeter2018-02-089-19/+20
| | | | cli_options are project-specific.
* _options: Support transform function for variable substitutionJürg Billeter2018-02-085-7/+15
|
* element.py: Split errors and warnings for overlapsJürg Billeter2018-02-081-17/+25
| | | | | This ensures that overlap warnings from projects without fail-on-overlaps are not reported in fatal error messages.
* Remove old workspace mount integration testJürg Billeter2018-02-077-110/+0
| | | | It has already been migrated.
* Add workspace mount integration test175-refactor-integration-testsTristan Maat2018-02-073-0/+50
|
* Remove old integration testsTristan Maat2018-02-07187-2341/+0
|
* Merge integration tests into general testsTristan Maat2018-02-0734-69/+109
|
* shell.py: Add shell testTristan Maat2018-02-071-0/+78
|
* Add bzr testTristan Maat2018-02-073-0/+49
|
* Migrate element test filesTristan Maat2018-02-0728-0/+794
|
* Add test utilities for integration testsTristan Maat2018-02-074-26/+132
|
* runcli.py: Allow setting individual config settingsTristan Maat2018-02-071-4/+8
|
* .gitignore: Add rules for various testing directoriesTristan Maat2018-02-071-3/+7
|
* tests/frontend/overlaps.py: Add test for runtime dependency stagingJürg Billeter2018-02-072-0/+19
| | | | This test covers #225.
* element.py: Fix staging of runtime dependencies with overlapsAbderrahim Kitouni2018-02-071-1/+1
| | | | | | | | This fixes `bst shell` crashes in the presence of overlaps. Fixes #225 Fixes: 2aa233da ("element: Handle overlaps with a whitelist and...")
* tests/cachekey: Updating cache key test for new artifact versioncache-keys-os-archTristan Van Berkom2018-02-0724-24/+24
|
* _project.py: Bumping artifact version for execution environmentTristan Van Berkom2018-02-071-1/+1
| | | | | Now that we consider the arch and os for every artifact, lets bump the core artifact version to make this trackable.
* element.py: Consider execution environment in cache keyTristan Van Berkom2018-02-071-0/+10
| | | | | | Do this by default for every element, later we will have to handle it differently when supporting projects which build on specific arches with virtualization or networked workers.
* _pipeline.py: Silence some messages while interrogating source consistencyTristan Van Berkom2018-02-071-3/+4
|
* Revert "image_authoring.rst: Add image creation documentation"Jürg Billeter2018-02-071-69/+0
| | | | | | This was pushed accidentally. This reverts commit 34a60189be63dc86d333ca895ce44bd24adb43c3.
* image_authoring.rst: Add image creation documentationTristan Maat2018-02-061-0/+69
|
* Increase the soft limit for open file descriptorsjuerg/fuse-rlimitJürg Billeter2018-02-061-0/+9
| | | | | | | | SafeHardlinks FUSE needs to hold file descriptors for all processes in the sandbox. Avoid hitting the limit too quickly by increasing the soft limit to the maximum. Fixes #232
* setup.py: Require jinja >= 2.10Javier Jardón2018-02-051-1/+1
| | | | | | jinja2 2.10 import time has been divided by two compared to Jinja 2.9.6 Fixes #194
* .gitlab-ci.yml: Update docker image so it contains jinja >= 2.10Javier Jardón2018-02-051-1/+1
|
* Update copyright years of changed filesSam Thursfield2018-02-053-2/+3
|