Remove omit stuff, and migrating integration tests to not use old 'arches' statements

If tests are going to be omitted, they can live outside of the buildstream repo.
diff --git a/integration-tests/.omit b/integration-tests/.omit
deleted file mode 100644
index ff31a1e..0000000
--- a/integration-tests/.omit
+++ /dev/null
@@ -1,3 +0,0 @@
-x86image-test/
-git-test
-ostree-test/
diff --git a/integration-tests/autotools-test/elements/dependencies/base-platform.bst b/integration-tests/autotools-test/elements/dependencies/base-platform.bst
index 09c95ac..a04a5b8 100644
--- a/integration-tests/autotools-test/elements/dependencies/base-platform.bst
+++ b/integration-tests/autotools-test/elements/dependencies/base-platform.bst
@@ -1,23 +1,19 @@
 kind: import
 description: Import the base freedesktop platform
+sources:
+- kind: ostree
+  url: gnomesdk:repo/
+  gpg-key: keys/gnome-sdk.gpg
+  (?):
+  - arch == "x86_64":
+      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
+      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
+  - arch == "i386":
+      track: runtime/org.freedesktop.BasePlatform/i386/1.4
+      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
 config:
   source: files
 public:
   bst:
     integration-commands:
     - ldconfig
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
diff --git a/integration-tests/autotools-test/elements/dependencies/base-sdk.bst b/integration-tests/autotools-test/elements/dependencies/base-sdk.bst
index cd191fd..a1b6c58 100644
--- a/integration-tests/autotools-test/elements/dependencies/base-sdk.bst
+++ b/integration-tests/autotools-test/elements/dependencies/base-sdk.bst
@@ -1,20 +1,16 @@
 kind: import
 description: Import the base freedesktop SDK
+sources:
+- kind: ostree
+  url: gnomesdk:repo/
+  gpg-key: keys/gnome-sdk.gpg
+  (?):
+  - arch == "x86_64":
+      track: runtime/org.freedesktop.BaseSdk/x86_64/1.4
+      ref: 0d9d255d56b08aeaaffb1c820eef85266eb730cb5667e50681185ccf5cd7c882
+  - arch == "i386":
+      track: runtime/org.freedesktop.BaseSdk/i386/1.4
+      ref: 16036b747c1ec8e7fe291f5b1f667cb942f0267d08fcad962e9b7627d6cf1981
 config:
   source: files
   target: usr
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BaseSdk/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 0d9d255d56b08aeaaffb1c820eef85266eb730cb5667e50681185ccf5cd7c882
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BaseSdk/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 16036b747c1ec8e7fe291f5b1f667cb942f0267d08fcad962e9b7627d6cf1981
diff --git a/integration-tests/autotools-test/project.conf b/integration-tests/autotools-test/project.conf
index 4212ca3..71e562b 100644
--- a/integration-tests/autotools-test/project.conf
+++ b/integration-tests/autotools-test/project.conf
@@ -12,3 +12,11 @@
 
 element-path: elements
 
+options:
+  arch:
+    type: arch
+    description: The machine architecture
+    values:
+    - x86_64
+    - i386
+
diff --git a/integration-tests/bzr-test/elements/dependencies/base-platform.bst b/integration-tests/bzr-test/elements/dependencies/base-platform.bst
index 09c95ac..a04a5b8 100644
--- a/integration-tests/bzr-test/elements/dependencies/base-platform.bst
+++ b/integration-tests/bzr-test/elements/dependencies/base-platform.bst
@@ -1,23 +1,19 @@
 kind: import
 description: Import the base freedesktop platform
+sources:
+- kind: ostree
+  url: gnomesdk:repo/
+  gpg-key: keys/gnome-sdk.gpg
+  (?):
+  - arch == "x86_64":
+      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
+      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
+  - arch == "i386":
+      track: runtime/org.freedesktop.BasePlatform/i386/1.4
+      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
 config:
   source: files
 public:
   bst:
     integration-commands:
     - ldconfig
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
diff --git a/integration-tests/bzr-test/elements/dependencies/base-sdk.bst b/integration-tests/bzr-test/elements/dependencies/base-sdk.bst
index cd191fd..a1b6c58 100644
--- a/integration-tests/bzr-test/elements/dependencies/base-sdk.bst
+++ b/integration-tests/bzr-test/elements/dependencies/base-sdk.bst
@@ -1,20 +1,16 @@
 kind: import
 description: Import the base freedesktop SDK
+sources:
+- kind: ostree
+  url: gnomesdk:repo/
+  gpg-key: keys/gnome-sdk.gpg
+  (?):
+  - arch == "x86_64":
+      track: runtime/org.freedesktop.BaseSdk/x86_64/1.4
+      ref: 0d9d255d56b08aeaaffb1c820eef85266eb730cb5667e50681185ccf5cd7c882
+  - arch == "i386":
+      track: runtime/org.freedesktop.BaseSdk/i386/1.4
+      ref: 16036b747c1ec8e7fe291f5b1f667cb942f0267d08fcad962e9b7627d6cf1981
 config:
   source: files
   target: usr
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BaseSdk/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 0d9d255d56b08aeaaffb1c820eef85266eb730cb5667e50681185ccf5cd7c882
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BaseSdk/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 16036b747c1ec8e7fe291f5b1f667cb942f0267d08fcad962e9b7627d6cf1981
diff --git a/integration-tests/bzr-test/project.conf b/integration-tests/bzr-test/project.conf
index 4212ca3..46985b0 100644
--- a/integration-tests/bzr-test/project.conf
+++ b/integration-tests/bzr-test/project.conf
@@ -12,3 +12,10 @@
 
 element-path: elements
 
+options:
+  arch:
+    type: arch
+    description: The machine architecture
+    values:
+    - x86_64
+    - i386
diff --git a/integration-tests/cmake-test/elements/dependencies/base-platform.bst b/integration-tests/cmake-test/elements/dependencies/base-platform.bst
index 09c95ac..a04a5b8 100644
--- a/integration-tests/cmake-test/elements/dependencies/base-platform.bst
+++ b/integration-tests/cmake-test/elements/dependencies/base-platform.bst
@@ -1,23 +1,19 @@
 kind: import
 description: Import the base freedesktop platform
+sources:
+- kind: ostree
+  url: gnomesdk:repo/
+  gpg-key: keys/gnome-sdk.gpg
+  (?):
+  - arch == "x86_64":
+      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
+      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
+  - arch == "i386":
+      track: runtime/org.freedesktop.BasePlatform/i386/1.4
+      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
 config:
   source: files
 public:
   bst:
     integration-commands:
     - ldconfig
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
diff --git a/integration-tests/cmake-test/elements/dependencies/base-sdk.bst b/integration-tests/cmake-test/elements/dependencies/base-sdk.bst
index cd191fd..a1b6c58 100644
--- a/integration-tests/cmake-test/elements/dependencies/base-sdk.bst
+++ b/integration-tests/cmake-test/elements/dependencies/base-sdk.bst
@@ -1,20 +1,16 @@
 kind: import
 description: Import the base freedesktop SDK
+sources:
+- kind: ostree
+  url: gnomesdk:repo/
+  gpg-key: keys/gnome-sdk.gpg
+  (?):
+  - arch == "x86_64":
+      track: runtime/org.freedesktop.BaseSdk/x86_64/1.4
+      ref: 0d9d255d56b08aeaaffb1c820eef85266eb730cb5667e50681185ccf5cd7c882
+  - arch == "i386":
+      track: runtime/org.freedesktop.BaseSdk/i386/1.4
+      ref: 16036b747c1ec8e7fe291f5b1f667cb942f0267d08fcad962e9b7627d6cf1981
 config:
   source: files
   target: usr
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BaseSdk/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 0d9d255d56b08aeaaffb1c820eef85266eb730cb5667e50681185ccf5cd7c882
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BaseSdk/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 16036b747c1ec8e7fe291f5b1f667cb942f0267d08fcad962e9b7627d6cf1981
diff --git a/integration-tests/cmake-test/project.conf b/integration-tests/cmake-test/project.conf
index 4212ca3..46985b0 100644
--- a/integration-tests/cmake-test/project.conf
+++ b/integration-tests/cmake-test/project.conf
@@ -12,3 +12,10 @@
 
 element-path: elements
 
+options:
+  arch:
+    type: arch
+    description: The machine architecture
+    values:
+    - x86_64
+    - i386
diff --git a/integration-tests/compose-test/elements/dependencies/base-platform.bst b/integration-tests/compose-test/elements/dependencies/base-platform.bst
index 09c95ac..a04a5b8 100644
--- a/integration-tests/compose-test/elements/dependencies/base-platform.bst
+++ b/integration-tests/compose-test/elements/dependencies/base-platform.bst
@@ -1,23 +1,19 @@
 kind: import
 description: Import the base freedesktop platform
+sources:
+- kind: ostree
+  url: gnomesdk:repo/
+  gpg-key: keys/gnome-sdk.gpg
+  (?):
+  - arch == "x86_64":
+      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
+      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
+  - arch == "i386":
+      track: runtime/org.freedesktop.BasePlatform/i386/1.4
+      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
 config:
   source: files
 public:
   bst:
     integration-commands:
     - ldconfig
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
diff --git a/integration-tests/compose-test/elements/dependencies/base-sdk.bst b/integration-tests/compose-test/elements/dependencies/base-sdk.bst
index cd191fd..a1b6c58 100644
--- a/integration-tests/compose-test/elements/dependencies/base-sdk.bst
+++ b/integration-tests/compose-test/elements/dependencies/base-sdk.bst
@@ -1,20 +1,16 @@
 kind: import
 description: Import the base freedesktop SDK
+sources:
+- kind: ostree
+  url: gnomesdk:repo/
+  gpg-key: keys/gnome-sdk.gpg
+  (?):
+  - arch == "x86_64":
+      track: runtime/org.freedesktop.BaseSdk/x86_64/1.4
+      ref: 0d9d255d56b08aeaaffb1c820eef85266eb730cb5667e50681185ccf5cd7c882
+  - arch == "i386":
+      track: runtime/org.freedesktop.BaseSdk/i386/1.4
+      ref: 16036b747c1ec8e7fe291f5b1f667cb942f0267d08fcad962e9b7627d6cf1981
 config:
   source: files
   target: usr
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BaseSdk/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 0d9d255d56b08aeaaffb1c820eef85266eb730cb5667e50681185ccf5cd7c882
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BaseSdk/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 16036b747c1ec8e7fe291f5b1f667cb942f0267d08fcad962e9b7627d6cf1981
diff --git a/integration-tests/compose-test/project.conf b/integration-tests/compose-test/project.conf
index a568022..234fdaf 100644
--- a/integration-tests/compose-test/project.conf
+++ b/integration-tests/compose-test/project.conf
@@ -17,3 +17,10 @@
 
 element-path: elements
 
+options:
+  arch:
+    type: arch
+    description: The machine architecture
+    values:
+    - x86_64
+    - i386
diff --git a/integration-tests/dpkg-build-test/elements/dependencies/base-platform.bst b/integration-tests/dpkg-build-test/elements/dependencies/base-platform.bst
index 09c95ac..a04a5b8 100644
--- a/integration-tests/dpkg-build-test/elements/dependencies/base-platform.bst
+++ b/integration-tests/dpkg-build-test/elements/dependencies/base-platform.bst
@@ -1,23 +1,19 @@
 kind: import
 description: Import the base freedesktop platform
+sources:
+- kind: ostree
+  url: gnomesdk:repo/
+  gpg-key: keys/gnome-sdk.gpg
+  (?):
+  - arch == "x86_64":
+      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
+      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
+  - arch == "i386":
+      track: runtime/org.freedesktop.BasePlatform/i386/1.4
+      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
 config:
   source: files
 public:
   bst:
     integration-commands:
     - ldconfig
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
diff --git a/integration-tests/dpkg-build-test/project.conf b/integration-tests/dpkg-build-test/project.conf
index 4212ca3..46985b0 100644
--- a/integration-tests/dpkg-build-test/project.conf
+++ b/integration-tests/dpkg-build-test/project.conf
@@ -12,3 +12,10 @@
 
 element-path: elements
 
+options:
+  arch:
+    type: arch
+    description: The machine architecture
+    values:
+    - x86_64
+    - i386
diff --git a/integration-tests/git-test/elements/dependencies/base-platform.bst b/integration-tests/git-test/elements/dependencies/base-platform.bst
deleted file mode 100644
index 09c95ac..0000000
--- a/integration-tests/git-test/elements/dependencies/base-platform.bst
+++ /dev/null
@@ -1,23 +0,0 @@
-kind: import
-description: Import the base freedesktop platform
-config:
-  source: files
-public:
-  bst:
-    integration-commands:
-    - ldconfig
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
diff --git a/integration-tests/git-test/elements/dependencies/base-sdk.bst b/integration-tests/git-test/elements/dependencies/base-sdk.bst
deleted file mode 100644
index cd191fd..0000000
--- a/integration-tests/git-test/elements/dependencies/base-sdk.bst
+++ /dev/null
@@ -1,20 +0,0 @@
-kind: import
-description: Import the base freedesktop SDK
-config:
-  source: files
-  target: usr
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BaseSdk/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 0d9d255d56b08aeaaffb1c820eef85266eb730cb5667e50681185ccf5cd7c882
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BaseSdk/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 16036b747c1ec8e7fe291f5b1f667cb942f0267d08fcad962e9b7627d6cf1981
diff --git a/integration-tests/git-test/elements/git-test.bst b/integration-tests/git-test/elements/git-test.bst
deleted file mode 100644
index d981a5e..0000000
--- a/integration-tests/git-test/elements/git-test.bst
+++ /dev/null
@@ -1,19 +0,0 @@
-kind: manual
-description: bzr test
-
-depends:
-- filename: dependencies/base-platform.bst
-  type: build
-- filename: dependencies/base-sdk.bst
-  type: build
-
-sources:
-- kind: git
-  url: file:///home/tristanmaat/Documents/Projects/buildstream/buildstream-tests/git-test/src
-  track: master
-
-  ref: 11084171004f9e83f90a3c17615e6a6055435717
-config:
-  install-commands:
-  - mkdir -p %{install-root}
-  - ./test
diff --git a/integration-tests/git-test/expected/out-git-test/test b/integration-tests/git-test/expected/out-git-test/test
deleted file mode 100644
index 9daeafb..0000000
--- a/integration-tests/git-test/expected/out-git-test/test
+++ /dev/null
@@ -1 +0,0 @@
-test
diff --git a/integration-tests/git-test/keys/gnome-sdk.gpg b/integration-tests/git-test/keys/gnome-sdk.gpg
deleted file mode 100644
index 8434b68..0000000
--- a/integration-tests/git-test/keys/gnome-sdk.gpg
+++ /dev/null
Binary files differ
diff --git a/integration-tests/git-test/project.conf b/integration-tests/git-test/project.conf
deleted file mode 100644
index 4212ca3..0000000
--- a/integration-tests/git-test/project.conf
+++ /dev/null
@@ -1,14 +0,0 @@
-# Import-test BuildStream project configuration.
-
-# Project name
-#
-name: script-test
-
-aliases:
-  gnomesdk: https://sdk.gnome.org/
-
-# Base project relative element path, elements will be loaded
-# from this base.
-
-element-path: elements
-
diff --git a/integration-tests/git-test/run-git-test.sh b/integration-tests/git-test/run-git-test.sh
deleted file mode 100644
index 04a0cb2..0000000
--- a/integration-tests/git-test/run-git-test.sh
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/bin/bash
-#
-# A script to run a BuildStream test case.
-
-
-TEST_DIR="elements/"
-RESULTS="results/"
-EXPECTED="expected/"
-
-set -eu
-
-# run_test
-#
-# Run tests for this test case.
-#
-# This should create a set of directories that match the directories
-# in 'results/', as well as a log of the BuildStream output in
-# 'test_log.log'.
-#
-run_test () {
-	local element
-	local elements
-	local element_name
-	local test_dir
-	local bst_file
-	local tar_file
-
-	local successes=0
-	local total=0
-	local exit
-
-	source ../lib.sh
-
-	tar_file="$(dirname "$(readlink -f "$0")")/src"
-	bst_file="$(dirname "$(readlink -f "$0")")/elements/git-test.bst"
-
-	patch_file_location "$bst_file" "$tar_file"
-
-	mkdir -p "$TEST_DIR"
-	elements="$(find "$TEST_DIR" -maxdepth 1 -type f)"
-
-	for element in $elements;
-	do
-		total=$((total + 1))
-
-		element_name="$(basename "$element")"
-		element_name="${element_name%.*}"
-
-		test_dir="$RESULTS/$element_name"
-
-		echo "Running test '$element_name'"
-
-		bst_with_flags build "$element_name".bst
-		bst_with_flags checkout "$element_name".bst "$test_dir"
-
-		exit=0
-		compare_results "$element_name" "$RESULTS" "$EXPECTED" || exit=$?
-		if [ $exit == 0 ]
-		then
-		   successes=$((successes + 1))
-		fi
-	done
-
-	if [ $total != $successes ]
-	then
-		return 1
-	fi
-}
-
-run_test "$@"
diff --git a/integration-tests/local-test/elements/dependencies/base-platform.bst b/integration-tests/local-test/elements/dependencies/base-platform.bst
index 09c95ac..a04a5b8 100644
--- a/integration-tests/local-test/elements/dependencies/base-platform.bst
+++ b/integration-tests/local-test/elements/dependencies/base-platform.bst
@@ -1,23 +1,19 @@
 kind: import
 description: Import the base freedesktop platform
+sources:
+- kind: ostree
+  url: gnomesdk:repo/
+  gpg-key: keys/gnome-sdk.gpg
+  (?):
+  - arch == "x86_64":
+      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
+      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
+  - arch == "i386":
+      track: runtime/org.freedesktop.BasePlatform/i386/1.4
+      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
 config:
   source: files
 public:
   bst:
     integration-commands:
     - ldconfig
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
diff --git a/integration-tests/local-test/elements/dependencies/base-sdk.bst b/integration-tests/local-test/elements/dependencies/base-sdk.bst
index cd191fd..a1b6c58 100644
--- a/integration-tests/local-test/elements/dependencies/base-sdk.bst
+++ b/integration-tests/local-test/elements/dependencies/base-sdk.bst
@@ -1,20 +1,16 @@
 kind: import
 description: Import the base freedesktop SDK
+sources:
+- kind: ostree
+  url: gnomesdk:repo/
+  gpg-key: keys/gnome-sdk.gpg
+  (?):
+  - arch == "x86_64":
+      track: runtime/org.freedesktop.BaseSdk/x86_64/1.4
+      ref: 0d9d255d56b08aeaaffb1c820eef85266eb730cb5667e50681185ccf5cd7c882
+  - arch == "i386":
+      track: runtime/org.freedesktop.BaseSdk/i386/1.4
+      ref: 16036b747c1ec8e7fe291f5b1f667cb942f0267d08fcad962e9b7627d6cf1981
 config:
   source: files
   target: usr
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BaseSdk/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 0d9d255d56b08aeaaffb1c820eef85266eb730cb5667e50681185ccf5cd7c882
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BaseSdk/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 16036b747c1ec8e7fe291f5b1f667cb942f0267d08fcad962e9b7627d6cf1981
diff --git a/integration-tests/local-test/project.conf b/integration-tests/local-test/project.conf
index 4212ca3..46985b0 100644
--- a/integration-tests/local-test/project.conf
+++ b/integration-tests/local-test/project.conf
@@ -12,3 +12,10 @@
 
 element-path: elements
 
+options:
+  arch:
+    type: arch
+    description: The machine architecture
+    values:
+    - x86_64
+    - i386
diff --git a/integration-tests/manual-test/elements/dependencies/base-platform.bst b/integration-tests/manual-test/elements/dependencies/base-platform.bst
index 09c95ac..a04a5b8 100644
--- a/integration-tests/manual-test/elements/dependencies/base-platform.bst
+++ b/integration-tests/manual-test/elements/dependencies/base-platform.bst
@@ -1,23 +1,19 @@
 kind: import
 description: Import the base freedesktop platform
+sources:
+- kind: ostree
+  url: gnomesdk:repo/
+  gpg-key: keys/gnome-sdk.gpg
+  (?):
+  - arch == "x86_64":
+      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
+      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
+  - arch == "i386":
+      track: runtime/org.freedesktop.BasePlatform/i386/1.4
+      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
 config:
   source: files
 public:
   bst:
     integration-commands:
     - ldconfig
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
diff --git a/integration-tests/manual-test/project.conf b/integration-tests/manual-test/project.conf
index 4212ca3..46985b0 100644
--- a/integration-tests/manual-test/project.conf
+++ b/integration-tests/manual-test/project.conf
@@ -12,3 +12,10 @@
 
 element-path: elements
 
+options:
+  arch:
+    type: arch
+    description: The machine architecture
+    values:
+    - x86_64
+    - i386
diff --git a/integration-tests/ostree-test/elements/dependencies/base-platform.bst b/integration-tests/ostree-test/elements/dependencies/base-platform.bst
deleted file mode 100644
index 09c95ac..0000000
--- a/integration-tests/ostree-test/elements/dependencies/base-platform.bst
+++ /dev/null
@@ -1,23 +0,0 @@
-kind: import
-description: Import the base freedesktop platform
-config:
-  source: files
-public:
-  bst:
-    integration-commands:
-    - ldconfig
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
diff --git a/integration-tests/ostree-test/elements/dependencies/base-sdk.bst b/integration-tests/ostree-test/elements/dependencies/base-sdk.bst
deleted file mode 100644
index cd191fd..0000000
--- a/integration-tests/ostree-test/elements/dependencies/base-sdk.bst
+++ /dev/null
@@ -1,20 +0,0 @@
-kind: import
-description: Import the base freedesktop SDK
-config:
-  source: files
-  target: usr
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BaseSdk/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 0d9d255d56b08aeaaffb1c820eef85266eb730cb5667e50681185ccf5cd7c882
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BaseSdk/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 16036b747c1ec8e7fe291f5b1f667cb942f0267d08fcad962e9b7627d6cf1981
diff --git a/integration-tests/ostree-test/elements/ostree-test.bst b/integration-tests/ostree-test/elements/ostree-test.bst
deleted file mode 100644
index 41bc43f..0000000
--- a/integration-tests/ostree-test/elements/ostree-test.bst
+++ /dev/null
@@ -1,20 +0,0 @@
-kind: manual
-description: bzr test
-
-depends:
-- filename: dependencies/base-platform.bst
-  type: build
-- filename: dependencies/base-sdk.bst
-  type: build
-
-sources:
-- kind: ostree
-  url: file:///home/tristanmaat/Documents/Projects/buildstream/buildstream-tests/ostree-test/src
-  directory: somewhere
-  track: test
-  ref: bd5cc009f076d4fb696447bb671512e71897eacc2fc198c98d3af69fcdf59f11
-
-config:
-  install-commands:
-  - mkdir -p %{install-root}
-  - somewhere/test
diff --git a/integration-tests/ostree-test/expected/ostree-test/test b/integration-tests/ostree-test/expected/ostree-test/test
deleted file mode 100644
index 9daeafb..0000000
--- a/integration-tests/ostree-test/expected/ostree-test/test
+++ /dev/null
@@ -1 +0,0 @@
-test
diff --git a/integration-tests/ostree-test/keys/gnome-sdk.gpg b/integration-tests/ostree-test/keys/gnome-sdk.gpg
deleted file mode 100644
index 8434b68..0000000
--- a/integration-tests/ostree-test/keys/gnome-sdk.gpg
+++ /dev/null
Binary files differ
diff --git a/integration-tests/ostree-test/project.conf b/integration-tests/ostree-test/project.conf
deleted file mode 100644
index 4212ca3..0000000
--- a/integration-tests/ostree-test/project.conf
+++ /dev/null
@@ -1,14 +0,0 @@
-# Import-test BuildStream project configuration.
-
-# Project name
-#
-name: script-test
-
-aliases:
-  gnomesdk: https://sdk.gnome.org/
-
-# Base project relative element path, elements will be loaded
-# from this base.
-
-element-path: elements
-
diff --git a/integration-tests/ostree-test/run-ostree-test.sh b/integration-tests/ostree-test/run-ostree-test.sh
deleted file mode 100644
index fd78b86..0000000
--- a/integration-tests/ostree-test/run-ostree-test.sh
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/bash
-#
-# A script to run a BuildStream test case.
-
-
-TEST_DIR="elements/"
-RESULTS="results/"
-EXPECTED="expected/"
-
-set -eu
-
-# run_test
-#
-# Run tests for this test case.
-#
-# This should create a set of directories that match the directories
-# in 'results/', as well as a log of the BuildStream output in
-# 'test_log.log'.
-#
-run_test () {
-	local element
-	local elements
-	local element_name
-	local test_dir
-	local bst_file
-	local tar_file
-
-	local successes=0
-	local total=0
-	local exit
-
-	source ../lib.sh
-
-
-	tar_file="$(dirname "$(readlink -f "$0")")/src"
-	bst_file="$(dirname "$(readlink -f "$0")")/elements/ostree-test.bst"
-
-	patch_file_location "$bst_file" "$tar_file"
-
-	mkdir -p "$TEST_DIR"
-	elements="$(find "$TEST_DIR" -maxdepth 1 -type f)"
-
-	for element in $elements;
-	do
-		total=$((total + 1))
-
-		element_name="$(basename "$element")"
-		element_name="${element_name%.*}"
-
-		test_dir="$RESULTS/$element_name"
-
-		echo "Running test '$element_name'"
-
-		bst_with_flags build "$element_name".bst
-		bst_with_flags checkout "$element_name".bst "$test_dir"
-
-		exit=0
-		compare_results "$element_name" "$RESULTS" "$EXPECTED" || exit=$?
-		if [ $exit == 0 ]
-		then
-		   successes=$((successes + 1))
-		fi
-	done
-
-	if [ $total != $successes ]
-	then
-		return 1
-	fi
-}
-
-run_test "$@"
diff --git a/integration-tests/ostree-test/src/config b/integration-tests/ostree-test/src/config
deleted file mode 100644
index 83b6be1..0000000
--- a/integration-tests/ostree-test/src/config
+++ /dev/null
@@ -1,3 +0,0 @@
-[core]
-repo_version=1
-mode=bare
diff --git a/integration-tests/ostree-test/src/objects/16/f79cc2a8fa211af59ae76342580fe71b3b43e63ee91ed8be6082a035f7b4b4.dirmeta b/integration-tests/ostree-test/src/objects/16/f79cc2a8fa211af59ae76342580fe71b3b43e63ee91ed8be6082a035f7b4b4.dirmeta
deleted file mode 100644
index dd4d5e3..0000000
--- a/integration-tests/ostree-test/src/objects/16/f79cc2a8fa211af59ae76342580fe71b3b43e63ee91ed8be6082a035f7b4b4.dirmeta
+++ /dev/null
Binary files differ
diff --git a/integration-tests/ostree-test/src/objects/4d/0530fd08875e2e64dab3d48124c2e69ed88a39f02753009d6575583e95d052.file b/integration-tests/ostree-test/src/objects/4d/0530fd08875e2e64dab3d48124c2e69ed88a39f02753009d6575583e95d052.file
deleted file mode 100644
index 6a834ea..0000000
--- a/integration-tests/ostree-test/src/objects/4d/0530fd08875e2e64dab3d48124c2e69ed88a39f02753009d6575583e95d052.file
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/usr/bin/env bash
-echo 'test' > /buildstream/install/test
diff --git a/integration-tests/ostree-test/src/objects/6d/ed2d0c1f4799e7e1b3e2eeabb0877ae17e12abc77734c5253dcd1317b3cbc2.dirtree b/integration-tests/ostree-test/src/objects/6d/ed2d0c1f4799e7e1b3e2eeabb0877ae17e12abc77734c5253dcd1317b3cbc2.dirtree
deleted file mode 100644
index 015ecec..0000000
--- a/integration-tests/ostree-test/src/objects/6d/ed2d0c1f4799e7e1b3e2eeabb0877ae17e12abc77734c5253dcd1317b3cbc2.dirtree
+++ /dev/null
Binary files differ
diff --git a/integration-tests/ostree-test/src/objects/bd/5cc009f076d4fb696447bb671512e71897eacc2fc198c98d3af69fcdf59f11.commit b/integration-tests/ostree-test/src/objects/bd/5cc009f076d4fb696447bb671512e71897eacc2fc198c98d3af69fcdf59f11.commit
deleted file mode 100644
index 3ffd636..0000000
--- a/integration-tests/ostree-test/src/objects/bd/5cc009f076d4fb696447bb671512e71897eacc2fc198c98d3af69fcdf59f11.commit
+++ /dev/null
Binary files differ
diff --git a/integration-tests/ostree-test/src/refs/heads/test b/integration-tests/ostree-test/src/refs/heads/test
deleted file mode 100644
index 54c511f..0000000
--- a/integration-tests/ostree-test/src/refs/heads/test
+++ /dev/null
@@ -1 +0,0 @@
-bd5cc009f076d4fb696447bb671512e71897eacc2fc198c98d3af69fcdf59f11
diff --git a/integration-tests/ostree-test/tree/test b/integration-tests/ostree-test/tree/test
deleted file mode 100644
index 6a834ea..0000000
--- a/integration-tests/ostree-test/tree/test
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/usr/bin/env bash
-echo 'test' > /buildstream/install/test
diff --git a/integration-tests/pip-test/elements/dependencies/base-platform.bst b/integration-tests/pip-test/elements/dependencies/base-platform.bst
index 9cf033f..51c9dc9 100644
--- a/integration-tests/pip-test/elements/dependencies/base-platform.bst
+++ b/integration-tests/pip-test/elements/dependencies/base-platform.bst
@@ -1,22 +1,18 @@
 kind: import
 description: Import the base freedesktop platform
+sources:
+- kind: ostree
+  url: gnomesdk:repo/
+  gpg-key: keys/gnome-sdk.gpg
+  (?):
+  - arch == "x86_64":
+      track: runtime/org.freedesktop.BasePlatform/x86_64/1.6
+      ref: 9a2d4d9b4a2cf4e1ddcfd1b696e5cefba35d62b70ef61435b15ea3cb905cc4cf
+  - arch == "i386":
+      track: runtime/org.freedesktop.BasePlatform/i386/1.6
 config:
   source: files
 public:
   bst:
     integration-commands:
     - ldconfig
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/x86_64/1.6
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 9a2d4d9b4a2cf4e1ddcfd1b696e5cefba35d62b70ef61435b15ea3cb905cc4cf
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/i386/1.6
-      gpg-key: keys/gnome-sdk.gpg
diff --git a/integration-tests/pip-test/elements/dependencies/base-sdk.bst b/integration-tests/pip-test/elements/dependencies/base-sdk.bst
index 72f28ce..ba7ae24 100644
--- a/integration-tests/pip-test/elements/dependencies/base-sdk.bst
+++ b/integration-tests/pip-test/elements/dependencies/base-sdk.bst
@@ -1,19 +1,15 @@
 kind: import
 description: Import the base freedesktop SDK
+sources:
+- kind: ostree
+  url: gnomesdk:repo/
+  gpg-key: keys/gnome-sdk.gpg
+  (?):
+  - arch == "x86_64":
+      track: runtime/org.freedesktop.BaseSdk/x86_64/1.6
+      ref: fa0dbd1b1eee9ec89518c1938c89803e0c54a12cd7ce892082433ad56b8a6f9b
+  - arch == "i386":
+      track: runtime/org.freedesktop.BaseSdk/i386/1.6
 config:
   source: files
   target: usr
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BaseSdk/x86_64/1.6
-      gpg-key: keys/gnome-sdk.gpg
-      ref: fa0dbd1b1eee9ec89518c1938c89803e0c54a12cd7ce892082433ad56b8a6f9b
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BaseSdk/i386/1.6
-      gpg-key: keys/gnome-sdk.gpg
diff --git a/integration-tests/pip-test/project.conf b/integration-tests/pip-test/project.conf
index 4212ca3..46985b0 100644
--- a/integration-tests/pip-test/project.conf
+++ b/integration-tests/pip-test/project.conf
@@ -12,3 +12,10 @@
 
 element-path: elements
 
+options:
+  arch:
+    type: arch
+    description: The machine architecture
+    values:
+    - x86_64
+    - i386
diff --git a/integration-tests/run-test.sh b/integration-tests/run-test.sh
index f166d2f..c9556eb 100755
--- a/integration-tests/run-test.sh
+++ b/integration-tests/run-test.sh
@@ -20,8 +20,6 @@
                 suite is run, otherwise the given arguments will be run
 	run	Run the test suite.  (Does not clean)
 	clean	Clean temporary test files
-	omit	Omit the given test from test runs
-	include	Include the given test in test runs
 
 Options:
 	--help  	Display this help message and exit
@@ -57,14 +55,6 @@
 				shift
 				clean "$@"
 				break ;;
-			"omit")
-				shift
-				omit "$@"
-				break ;;
-			"include")
-				shift
-				include "$@"
-				break ;;
 			--sources)
 				export BST_SOURCE_CACHE=$(realpath "${2}")
 				shift 2 ;;
@@ -113,7 +103,6 @@
 # Run all tests in the current directory.
 run () {
 	local succeeded=0
-	local omitted=0
 	local failed=0
 	local state
 	local tests
@@ -135,9 +124,6 @@
 			if [ $state == 0 ]
 			then
 				((succeeded++))
-			elif [ $state == 2 ]
-			then
-				((omitted++))
 			else
 				((failed++))
 			fi
@@ -157,7 +143,6 @@
 
 	echo
 	printf "%4s test%.*s ${GREEN}succeeded${END}.\n" $succeeded $((succeeded != 1)) "s"
-	printf "%4s test%.*s ${YELLOW}omitted${END}.\n" $omitted $((omitted != 1)) "s"
 	printf "%4s test%.*s ${RED}failed${END}.\n" $failed $((failed != 1)) "s"
 
 	if [ $failed != 0 ]
@@ -194,13 +179,6 @@
 run-test () {
 	local test="$1"
 
-	touch .omit
-	if grep -q "$test" .omit
-	then
-		echo -e "${YELLOW}Omitting${END} test $test."
-		return 2
-	fi
-
 	echo "============================================================"
 	echo "Running tests for test case '$test'"
 	echo "============================================================"
@@ -215,59 +193,4 @@
 	fi
 }
 
-# omit
-#
-# Ignore the given test during future test runs
-#
-# Args:
-#    test ($1) - The test to ignore
-#
-omit() {
-	local test="$1"
-
-	# Tell the user if we don't need to omit the file
-	touch .omit
-	if grep -q "$test" .omit
-	then
-		echo "Test $test is already omitted." 2>&1
-		exit 1
-	fi
-
-	if [ -d "$test" ]
-	then
-		echo "$test" >> .omit
-	else
-		echo "No such test." 2>&1
-		exit 1
-	fi
-}
-
-# include
-#
-# After a test has been omitted, re-include it
-#
-# Args:
-#    test ($1) - The test to include
-#
-include() {
-	local test="$1"
-
-	local temp
-
-	touch .omit
-
-	# Make a temporary file to inverse grep to
-	temp=$(mktemp)
-
-	# Tell the user if we don't need to include the file
-	if ! grep -q "$test" .omit
-	then
-		echo "Test $test is already included." 2>&1
-		exit 1
-	fi
-
-	# Remove the line containing the test string
-	grep -v "$test" .omit > "$temp"; mv "$temp" .omit
-}
-
 main "$@"
diff --git a/integration-tests/script-test/elements/dependencies/base-platform.bst b/integration-tests/script-test/elements/dependencies/base-platform.bst
index 09c95ac..a04a5b8 100644
--- a/integration-tests/script-test/elements/dependencies/base-platform.bst
+++ b/integration-tests/script-test/elements/dependencies/base-platform.bst
@@ -1,23 +1,19 @@
 kind: import
 description: Import the base freedesktop platform
+sources:
+- kind: ostree
+  url: gnomesdk:repo/
+  gpg-key: keys/gnome-sdk.gpg
+  (?):
+  - arch == "x86_64":
+      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
+      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
+  - arch == "i386":
+      track: runtime/org.freedesktop.BasePlatform/i386/1.4
+      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
 config:
   source: files
 public:
   bst:
     integration-commands:
     - ldconfig
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
diff --git a/integration-tests/script-test/project.conf b/integration-tests/script-test/project.conf
index 4212ca3..46985b0 100644
--- a/integration-tests/script-test/project.conf
+++ b/integration-tests/script-test/project.conf
@@ -12,3 +12,10 @@
 
 element-path: elements
 
+options:
+  arch:
+    type: arch
+    description: The machine architecture
+    values:
+    - x86_64
+    - i386
diff --git a/integration-tests/shell-test/elements/dependencies/base-platform.bst b/integration-tests/shell-test/elements/dependencies/base-platform.bst
index 09c95ac..a04a5b8 100644
--- a/integration-tests/shell-test/elements/dependencies/base-platform.bst
+++ b/integration-tests/shell-test/elements/dependencies/base-platform.bst
@@ -1,23 +1,19 @@
 kind: import
 description: Import the base freedesktop platform
+sources:
+- kind: ostree
+  url: gnomesdk:repo/
+  gpg-key: keys/gnome-sdk.gpg
+  (?):
+  - arch == "x86_64":
+      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
+      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
+  - arch == "i386":
+      track: runtime/org.freedesktop.BasePlatform/i386/1.4
+      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
 config:
   source: files
 public:
   bst:
     integration-commands:
     - ldconfig
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
diff --git a/integration-tests/shell-test/project.conf b/integration-tests/shell-test/project.conf
index 4212ca3..46985b0 100644
--- a/integration-tests/shell-test/project.conf
+++ b/integration-tests/shell-test/project.conf
@@ -12,3 +12,10 @@
 
 element-path: elements
 
+options:
+  arch:
+    type: arch
+    description: The machine architecture
+    values:
+    - x86_64
+    - i386
diff --git a/integration-tests/stack-test/elements/dependencies/base-platform.bst b/integration-tests/stack-test/elements/dependencies/base-platform.bst
index 09c95ac..a04a5b8 100644
--- a/integration-tests/stack-test/elements/dependencies/base-platform.bst
+++ b/integration-tests/stack-test/elements/dependencies/base-platform.bst
@@ -1,23 +1,19 @@
 kind: import
 description: Import the base freedesktop platform
+sources:
+- kind: ostree
+  url: gnomesdk:repo/
+  gpg-key: keys/gnome-sdk.gpg
+  (?):
+  - arch == "x86_64":
+      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
+      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
+  - arch == "i386":
+      track: runtime/org.freedesktop.BasePlatform/i386/1.4
+      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
 config:
   source: files
 public:
   bst:
     integration-commands:
     - ldconfig
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
diff --git a/integration-tests/stack-test/project.conf b/integration-tests/stack-test/project.conf
index 7f1e937..8b3de5a 100644
--- a/integration-tests/stack-test/project.conf
+++ b/integration-tests/stack-test/project.conf
@@ -9,3 +9,10 @@
 
 element-path: elements
 
+options:
+  arch:
+    type: arch
+    description: The machine architecture
+    values:
+    - x86_64
+    - i386
diff --git a/integration-tests/tar-test/elements/dependencies/base-platform.bst b/integration-tests/tar-test/elements/dependencies/base-platform.bst
deleted file mode 100644
index 09c95ac..0000000
--- a/integration-tests/tar-test/elements/dependencies/base-platform.bst
+++ /dev/null
@@ -1,23 +0,0 @@
-kind: import
-description: Import the base freedesktop platform
-config:
-  source: files
-public:
-  bst:
-    integration-commands:
-    - ldconfig
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
diff --git a/integration-tests/tar-test/elements/dependencies/base-sdk.bst b/integration-tests/tar-test/elements/dependencies/base-sdk.bst
deleted file mode 100644
index cd191fd..0000000
--- a/integration-tests/tar-test/elements/dependencies/base-sdk.bst
+++ /dev/null
@@ -1,20 +0,0 @@
-kind: import
-description: Import the base freedesktop SDK
-config:
-  source: files
-  target: usr
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BaseSdk/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 0d9d255d56b08aeaaffb1c820eef85266eb730cb5667e50681185ccf5cd7c882
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BaseSdk/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 16036b747c1ec8e7fe291f5b1f667cb942f0267d08fcad962e9b7627d6cf1981
diff --git a/integration-tests/tar-test/elements/tar-test.bst b/integration-tests/tar-test/elements/tar-test.bst
deleted file mode 100644
index 193cfc8..0000000
--- a/integration-tests/tar-test/elements/tar-test.bst
+++ /dev/null
@@ -1,18 +0,0 @@
-kind: manual
-description: tar test
-
-depends:
-- filename: dependencies/base-platform.bst
-  type: build
-- filename: dependencies/base-sdk.bst
-  type: build
-
-sources:
-- kind: tar
-  url: file:///home/tristanmaat/Documents/Projects/buildstream/buildstream-tests/tar-test/src.tar.gz
-
-  ref: 164ab309db28e97e96896eb830a04dc3558444fb870ab3930694b5b160327d88
-config:
-  install-commands:
-  - mkdir -p %{install-root}
-  - ./test
diff --git a/integration-tests/tar-test/expected/tar-test/test b/integration-tests/tar-test/expected/tar-test/test
deleted file mode 100644
index 9daeafb..0000000
--- a/integration-tests/tar-test/expected/tar-test/test
+++ /dev/null
@@ -1 +0,0 @@
-test
diff --git a/integration-tests/tar-test/keys/gnome-sdk.gpg b/integration-tests/tar-test/keys/gnome-sdk.gpg
deleted file mode 100644
index 8434b68..0000000
--- a/integration-tests/tar-test/keys/gnome-sdk.gpg
+++ /dev/null
Binary files differ
diff --git a/integration-tests/tar-test/project.conf b/integration-tests/tar-test/project.conf
deleted file mode 100644
index 4212ca3..0000000
--- a/integration-tests/tar-test/project.conf
+++ /dev/null
@@ -1,14 +0,0 @@
-# Import-test BuildStream project configuration.
-
-# Project name
-#
-name: script-test
-
-aliases:
-  gnomesdk: https://sdk.gnome.org/
-
-# Base project relative element path, elements will be loaded
-# from this base.
-
-element-path: elements
-
diff --git a/integration-tests/tar-test/run-tar-test.sh b/integration-tests/tar-test/run-tar-test.sh
deleted file mode 100644
index 7e22563..0000000
--- a/integration-tests/tar-test/run-tar-test.sh
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/bin/bash
-#
-# A script to run a BuildStream test case.
-
-
-TEST_DIR="elements/"
-RESULTS="results/"
-EXPECTED="expected/"
-
-set -eu
-
-# run_test
-#
-# Run tests for this test case.
-#
-# This should create a set of directories that match the directories
-# in 'results/', as well as a log of the BuildStream output in
-# 'test_log.log'.
-#
-run_test () {
-	local element
-	local elements
-	local element_name
-	local test_dir
-	local bst_file
-	local tar_file
-
-	local successes=0
-	local total=0
-	local exit
-
-	source ../lib.sh
-
-	tar_file="$(dirname "$(readlink -f "$0")")/src.tar.gz"
-	bst_file="$(dirname "$(readlink -f "$0")")/elements/tar-test.bst"
-
-	patch_file_location "$bst_file" "$tar_file"
-
-	mkdir -p "$TEST_DIR"
-	elements="$(find "$TEST_DIR" -maxdepth 1 -type f)"
-
-	for element in $elements;
-	do
-		total=$((total + 1))
-
-		element_name="$(basename "$element")"
-		element_name="${element_name%.*}"
-
-		test_dir="$RESULTS/$element_name"
-
-		echo "Running test '$element_name'"
-
-		bst_with_flags build "$element_name".bst
-		bst_with_flags checkout "$element_name".bst "$test_dir"
-
-		exit=0
-		compare_results "$element_name" "$RESULTS" "$EXPECTED" || exit=$?
-		if [ $exit == 0 ]
-		then
-		   successes=$((successes + 1))
-		fi
-	done
-
-	if [ $total != $successes ]
-	then
-		return 1
-	fi
-}
-
-run_test "$@"
diff --git a/integration-tests/tar-test/src.tar.gz b/integration-tests/tar-test/src.tar.gz
deleted file mode 100644
index e68c4e9..0000000
--- a/integration-tests/tar-test/src.tar.gz
+++ /dev/null
Binary files differ
diff --git a/integration-tests/x86image-test/elements/dependencies/base-platform.bst b/integration-tests/x86image-test/elements/dependencies/base-platform.bst
deleted file mode 100644
index 09c95ac..0000000
--- a/integration-tests/x86image-test/elements/dependencies/base-platform.bst
+++ /dev/null
@@ -1,23 +0,0 @@
-kind: import
-description: Import the base freedesktop platform
-config:
-  source: files
-public:
-  bst:
-    integration-commands:
-    - ldconfig
-arches:
-  x86_64:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/x86_64/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: c9d09b7250a12ef09d95952fc4f49a35e5f8c2c1dd7141b7eeada4069e6f6576
-  i386:
-    sources:
-    - kind: ostree
-      url: gnomesdk:repo/
-      track: runtime/org.freedesktop.BasePlatform/i386/1.4
-      gpg-key: keys/gnome-sdk.gpg
-      ref: 27ebae91839a454596a273391b0e53063eaa8aca4fc9cb64654582bfbc338c96
diff --git a/integration-tests/x86image-test/elements/x86-test.bst b/integration-tests/x86image-test/elements/x86-test.bst
deleted file mode 100644
index 09b2078..0000000
--- a/integration-tests/x86image-test/elements/x86-test.bst
+++ /dev/null
@@ -1,10 +0,0 @@
-kind: x86image
-description: x86image test
-
-depends:
-  - filename: dependencies/base-platform.bst
-    type: build
-
-config:
-  base: dependencies/base-platform.bst
-  input: dependencies/base-platform.bst
diff --git a/integration-tests/x86image-test/keys/gnome-sdk.gpg b/integration-tests/x86image-test/keys/gnome-sdk.gpg
deleted file mode 100644
index 8434b68..0000000
--- a/integration-tests/x86image-test/keys/gnome-sdk.gpg
+++ /dev/null
Binary files differ
diff --git a/integration-tests/x86image-test/project.conf b/integration-tests/x86image-test/project.conf
deleted file mode 100644
index 7f1e937..0000000
--- a/integration-tests/x86image-test/project.conf
+++ /dev/null
@@ -1,11 +0,0 @@
-# Import-test BuildStream project configuration.
-
-# Project name
-#
-name: script-test
-
-# Base project relative element path, elements will be loaded
-# from this base.
-
-element-path: elements
-
diff --git a/integration-tests/x86image-test/run-x86image-test.sh b/integration-tests/x86image-test/run-x86image-test.sh
deleted file mode 100644
index 3b4472f..0000000
--- a/integration-tests/x86image-test/run-x86image-test.sh
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/bin/bash
-#
-# A script to run a BuildStream test case.
-
-
-TEST_DIR="elements/"
-RESULTS="results/"
-EXPECTED="expected/"
-
-set -eu
-
-# run_test
-#
-# Run tests for this test case.
-#
-# This should create a set of directories that match the directories
-# in 'results/', as well as a log of the BuildStream output in
-# 'test_log.log'.
-#
-run_test () {
-	local element
-	local elements
-	local element_name
-	local test_dir
-
-	local successes=0
-	local total=0
-	local exit
-
-	source ../lib.sh
-
-	mkdir -p "$TEST_DIR"
-	elements="$(find "$TEST_DIR" -maxdepth 1 -type f)"
-
-	for element in $elements;
-	do
-		total=$((total + 1))
-
-		element_name="$(basename "$element")"
-		element_name="${element_name%.*}"
-
-		test_dir="$RESULTS/$element_name"
-
-		echo "Running test '$element_name'"
-
-		bst_with_flags build "$element_name".bst
-		bst_with_flags checkout "$element_name".bst "$test_dir"
-
-		exit=0
-		compare_results "$element_name" "$RESULTS" "$EXPECTED" || exit=$?
-		if [ $exit == 0 ]
-		then
-		   successes=$((successes + 1))
-		fi
-	done
-
-	if [ $total != $successes ]
-	then
-		return 1
-	fi
-}
-
-run_test "$@"