BuildStream pulls from remote cache, even when configuration removed
Summary
Trying to test freedesktop-sdk for build reproducibility, I noticed that buildstream was pulling from a remote cache I no longer had configured in project.conf. As a result testing the reproducibility was impossible. Note that the script used to test reproducibility deletes objects and refs from the local cache in an attempt to force rebuilds.
Steps to reproduce
It should be possible to reproduce by:
- Clone a repo with a remote artifact cache configured (e.g. freedesktop-sdk)
- Pull an element from the remote cache
- Remove the
artifacts
config from project.conf - Remove the element from your local cache
- Attempt to build the element
- Notice that it's a pull job, rather than a build.
The easier way to test would be to use this branch of freedesktop-sdk and follow the instructions in utils/reproducible.sh
. You may then check the produced reproducible.log to see that buildstream pulls from the remote cache.
What is the current bug behavior?
Buildstream pulls from a remote cache, even if it's been removed from project.conf.
What is the expected correct behavior?
Buildstream should build locally.
Relevant logs and/or screenshots
Here is the relevant output of running reproducible.sh for just one element, note the pull job and the fetch needed
:
Using the default directory /home/thomascoldrick/.cache/buildstream/artifacts/cas for the content-addressable store.
Extracted directory into /tmp/reproducible.uhJksQp6X6/b.
Using the default directory /home/thomascoldrick/.cache/buildstream/artifacts/cas for the content-addressable store.
Extracted directory into /tmp/reproducible.j3peTSrrab/a.
Using the default directory /home/thomascoldrick/.cache/buildstream/artifacts/cas for the content-addressable store.
6b2ebcac6b603db28184337930e76a2978c48a273e2c84c71ee39ae98fb6968e
Deleted object and ref for freedesktop-sdk/base-expat/0f80ce9e7d9dba103e1abf0a5cf1d9de4566efc9fa6f0107100685d221153e21.
[--:--:--][][] START Build
[--:--:--][][] START Loading elements
[00:00:02][][] SUCCESS Loading elements
[--:--:--][][] START Resolving elements
[00:00:01][][] SUCCESS Resolving elements
[--:--:--][][] START Initializing remote caches
[00:00:00][][] SUCCESS Initializing remote caches
[--:--:--][][] START Resolving cached state
[00:00:00][][] SUCCESS Resolving cached state
[--:--:--][][] START Checking sources
[00:00:00][][] SUCCESS Checking sources
BuildStream Version 1.1.7
Session Start: Thursday, 30-08-2018 at 11:14:03
Project: freedesktop-sdk (/home/thomascoldrick/fdo)
Targets: base/expat.bst
User Configuration
Configuration File: Default Configuration
Log Files: /home/thomascoldrick/.cache/buildstream/logs
Source Mirrors: /home/thomascoldrick/.cache/buildstream/sources
Build Area: /home/thomascoldrick/.cache/buildstream/build
Artifact Cache: /home/thomascoldrick/.cache/buildstream/artifacts
Strict Build Plan: Yes
Maximum Fetch Tasks: 10
Maximum Build Tasks: 4
Maximum Push Tasks: 4
Maximum Network Retries: 2
Project Options
bootstrap_build_arch: x86_64
target_arch: x86_64
Pipeline
cached 81944a22f0a775c559bfde2ad3b8e1991af2a2e36b227b477d3d6f133460a3ff bootstrap-junction.bst:cross-installation-links.bst
cached d1f300b6e2b55e3b4db358e673330295e61742321c394c4e4945e329387ea44a bootstrap-junction.bst:dependencies/base-sdk-image.bst
cached dfb997eee4fd2907691086336fae1b6e5c71c7590759f68601b04a77430212e1 bootstrap-junction.bst:dependencies/base-sdk-links.bst
cached 5b7b202698332ac7be068c4d44fd282c928bbd65502ad4456b711df62c9bc798 bootstrap-junction.bst:dependencies/base-sdk.bst
cached 05e933b9501359870b7db953cf1f6899b96e692761cfa5cfa4329ae6e575b091 bootstrap-junction.bst:gnu-config.bst
cached 09333c3e684df76c5cb959c591024608cc4bf764fa0cae4b9b70fa3e53c686a7 bootstrap-junction.bst:linux-headers.bst
cached a35dafe9e964d890beec53e3991bc84ba927253305a2f965cf04129ed11ab6c4 bootstrap-junction.bst:binutils-stage1.bst
cached dd47e050c41981f657d85d4556a7922a9ad51c22986f6e9af7344c3ff4793984 bootstrap-junction.bst:tools-lib-path.bst
cached 1726d7d7414e30c2226e1e033fa931da5a510136d52a2f6299e26db031f507ee bootstrap-junction.bst:elfutils-host.bst
cached 568b8e8951347f77692fd9b20473038c5b5c60bcbdcf0caef8ba6278e9338017 bootstrap-junction.bst:file-stage1.bst
cached 990a93a1d273368147f650737f6dc89622c5845a820a260eee3b9654a6ddb0ff bootstrap-junction.bst:debugedit-host.bst
cached 2f2fce4d70afdfc6a1d10bb214dcb69ee97238d760958ee4cd50e5af4981c617 bootstrap-junction.bst:gcc-stage1.bst
cached 623e980a9518f81ce18953db59dce131707b5919e3b90abc7f26213d4a809e27 bootstrap-junction.bst:glibc.bst
cached 605a89a1f29c3509df84a458f6b4a89c5d0f90022a503971bb9485ce1a3441cd bootstrap-junction.bst:libstdc++-stage1.bst
cached 7dfee9f6bc1e16977e4ba831b7a5be00780b513670389fa28ea631947f5362a6 bootstrap-junction.bst:gcc-stage2.bst
cached f718c43585282803529937955a7d3c5fe814f2e493fa045237c8ce277bbc7239 bootstrap-junction.bst:attr.bst
cached c0dd7151d0db442385dcfaa2d542faf1f715b6555c2dc526f531a55e2e88fa67 bootstrap-junction.bst:acl.bst
cached 74fd948f26a5964108165e051b83a0c90341a4a902259bdcd59a2608bf560270 bootstrap-junction.bst:ncurses-stage1.bst
cached cd3cdf4530c8c2b9ef6d62e9578daefa589b681e2814044d950963018dfacc01 bootstrap-junction.bst:ncurses.bst
cached 0e7538848e8646c43084b1f8f587ca631b2fcc72a23335411ec5aab0c48db965 bootstrap-junction.bst:readline.bst
cached e9be2b21838d03f756af76cf64d260ac1984cecb069b4fc92a56d47a4af7ce32 bootstrap-junction.bst:bash.bst
cached 093672ea4550f2e0c69dd02515c1638c9a654beb52e084a43b2e43d005c1d43d bootstrap-junction.bst:binutils.bst
cached 2c33126fe08170f08d9614406bb318636a05eaa276d653cd26b2e81ae0d2ae6b bootstrap-junction.bst:bzip2.bst
cached 0b8f7186df8c799cc32d434dc737a41469b92046ea54f5e9f02b9b91d31685ea bootstrap-junction.bst:coreutils-manpages.bst
cached e0f26ccc9a51f65723f0e0176cfbfc06e04df6eec88da441ae5ccc9713bb2c98 bootstrap-junction.bst:coreutils.bst
cached 57ec6ff2ac8e9c231b9b65f212a3af777d457053b87707d17e33867d19b995d2 bootstrap-junction.bst:zlib.bst
cached cb9390b8fcc9a0480db1e7d7737b88fa4257b6093ef2ffad2e99588bddd95478 bootstrap-junction.bst:elfutils.bst
cached b5e24f0e041014e32c9e50b6b436cfae716f6d053fa882fb1c27b6e790259e16 bootstrap-junction.bst:file.bst
cached bcd5331628e8ae62fecb5495d1937ee54cd651c3a8db5b627db544eee3581089 bootstrap-junction.bst:openssl-static.bst
cached 70f8f2a4e681af136b579af00a03152bbd9c6b665fc79964be27a72b070bb574 bootstrap-junction.bst:popt.bst
cached 00961fd923658800cbb864c068cf3694cfebf263284e4cb2f0dd1ba20910f455 bootstrap-junction.bst:debugedit.bst
cached ca9f6a39c0f690a40badd31dfe1b9f9ddb6076381730eb08dab71bc766b38ad7 bootstrap-junction.bst:diffutils.bst
cached ad34ddbadf29f193acae03f58432260c5cd598de5320fc975f5be9f4c3ec90d2 bootstrap-junction.bst:findutils.bst
cached 8b4ba4cfec5a6d4eca6c7109b90107fe7f91541c376f6e105a656b9d8bc036cc bootstrap-junction.bst:gawk.bst
cached b41ee47c78d657bbd02bd7236ab12265b5b15dd610361fa4aa96d6ec8a7f2be9 bootstrap-junction.bst:gcc.bst
cached cbb0389cea5c689595870b796b9674f9f0e440cea8312f062d372deb9de2ffee bootstrap-junction.bst:grep.bst
cached 27ea4d0e76f9c6ba082e28ca2fc9f5ae1173aadaa14ac4dfc45c4709cb8febd9 bootstrap-junction.bst:make.bst
cached 43151056a155ebcd4012fbfd59a452f8e27c4ed166da65d37bf4148179ddefdd bootstrap-junction.bst:procps.bst
cached f39f3d9219fe1f3b72bf170a0195787aac8e99f45547e5147ae053466116ef5c bootstrap-junction.bst:sed.bst
cached 505b6fe98295b24470ecb1752c05f6a815372617197c3880bb75a968705208a1 bootstrap-junction.bst:glibc-stage1.bst
cached ed565f4ed49606d1f7b16987acfe03cc998881a43a17c37747ca587ea022e74a bootstrap-junction.bst:utf-locale.bst
cached 872e92481892bbdb7ddd1264534b178842c6df0b7b5b7a00b7c5e90e6b8e78ea bootstrap-junction.bst:bootstrap.bst
cached 2837c3b7afdab8b5c5e5187ea2451044445d42af7fa9fffdbf565b88925c327b bootstrap-junction.bst:bootstrap-dev.bst
cached f4d37798889e1f0ee1c6acc96419c048a2729e2331c75b050529d9084b7a2ba7 bootstrap-junction.bst:bootstrap-dev-extract.bst
cached a7846020b57a0cdc61cfbface9d49aa16c146471c9cf65b1ecd353f34da8ae67 bootstrap-junction.bst:bootstrap-platform.bst
cached 4397126c54974f6b60d9e9c913a0ae17225ae8eef2ef965728cfe7040ce83678 bootstrap-junction.bst:bootstrap-platform-extract.bst
cached a8a138b36cedf0de80e1ef29d4870ce12ba80624b1fdadbbcfe746179d7069a2 bootstrap-junction.bst:bootstrap-extract.bst
cached 51ebb7f075c60de0f178ede3c8a1da1a7cb5e6ebfb6c530fcc1453e85fc908b6 bootstrap-import.bst
waiting 0f80ce9e7d9dba103e1abf0a5cf1d9de4566efc9fa6f0107100685d221153e21 base/expat.bst
===============================================================================
[--:--:--][0f80ce9e][ pull:base/expat.bst ] START freedesktop-sdk/base-expat/0f80ce9e-pull.28660.log
[--:--:--][0f80ce9e][ pull:base/expat.bst ] INFO Pulling 0f80ce9e <- https://testcache.codethink.co.uk:11001
[--:--:--][0f80ce9e][ pull:base/expat.bst ] INFO Downloaded artifact 0f80ce9e
[00:00:02][0f80ce9e][ pull:base/expat.bst ] SUCCESS freedesktop-sdk/base-expat/0f80ce9e-pull.28660.log
[--:--:--][][] START cache_size.28666.log
[00:00:00][][] SUCCESS cache_size.28666.log
[00:00:07][][] SUCCESS Build
Pipeline Summary
Total: 49
Session: 1
Pull Queue: processed 1, skipped 0, failed 0
Fetch Queue: processed 0, skipped 1, failed 0
Build Queue: processed 0, skipped 1, failed 0
Using the default directory /home/thomascoldrick/.cache/buildstream/artifacts/cas for the content-addressable store.
Extracted directory into /tmp/reproducible.j3peTSrrab/b.
Possible fixes
While I would prefer this behaviour to be fixed in general, an additional change would be to allow a user to force a local rebuild