summaryrefslogtreecommitdiff
path: root/trove
diff options
context:
space:
mode:
authorTristan Van Berkom <tristan.vanberkom@codethink.co.uk>2016-10-30 16:28:31 +0900
committerTristan Van Berkom <tristan.vanberkom@codethink.co.uk>2016-11-11 17:36:41 +0900
commit6cb5b32227de1043933fed3542e70bc3c64f59c3 (patch)
tree5fd8396053cebe86e913391671d905b2c4c2c5ce /trove
parent3dcb1a2d6f541449ba7d5192c7db9e09204a799b (diff)
downloaddefinitions-6cb5b32227de1043933fed3542e70bc3c64f59c3.tar.gz
Move trove & mason related systems, clusters and strata to a new trove subdirectory
Change-Id: Id71531000851293c2be834360ff543399cda3989
Diffstat (limited to 'trove')
-rw-r--r--trove/clusters/mason-openstack.morph39
-rw-r--r--trove/clusters/mason.morph56
-rw-r--r--trove/clusters/trove-example.morph58
-rw-r--r--trove/clusters/trove.baserock.org-upgrade.morph19
-rw-r--r--trove/strata/fail2ban-common.morph14
-rw-r--r--trove/strata/fail2ban-common/fail2ban.morph6
-rw-r--r--trove/strata/lorry-controller.morph16
-rw-r--r--trove/strata/lorry-controller/lorry-controller.morph10
-rw-r--r--trove/strata/python3-core.morph58
-rw-r--r--trove/strata/python3-core/pyyaml.morph6
-rw-r--r--trove/strata/trove.morph101
-rw-r--r--trove/strata/trove/cgit.morph6
-rw-r--r--trove/strata/trove/clod.morph7
-rw-r--r--trove/strata/trove/gall.morph7
-rw-r--r--trove/strata/trove/gitano.morph5
-rw-r--r--trove/strata/trove/lace.morph7
-rw-r--r--trove/strata/trove/lrexlib-pcre.morph9
-rw-r--r--trove/strata/trove/lua-scrypt.morph4
-rw-r--r--trove/strata/trove/lua.morph11
-rw-r--r--trove/strata/trove/luxio.morph7
-rw-r--r--trove/strata/trove/supple.morph7
-rw-r--r--trove/strata/trove/trove-setup.morph4
-rw-r--r--trove/systems/trove-system-x86_64.morph65
23 files changed, 522 insertions, 0 deletions
diff --git a/trove/clusters/mason-openstack.morph b/trove/clusters/mason-openstack.morph
new file mode 100644
index 00000000..6a854bd5
--- /dev/null
+++ b/trove/clusters/mason-openstack.morph
@@ -0,0 +1,39 @@
+name: mason-openstack
+kind: cluster
+description: |
+ This is a template cluster morphology that can be adapted to set up a
+ Mason. Masons are composed of a trove and a distbuild system.
+systems:
+- morph: systems/build-system-x86_64.morph
+ deploy-defaults:
+ ARTIFACT_CACHE_SERVER: example-cache-server
+ CONTROLLERHOST: controller-hostname
+ DISTBUILD_CONTROLLER: true
+ DISTBUILD_WORKER: true
+ INSTALL_FILES: install-files/distbuild/manifest
+ RAM_SIZE: 8G
+ TROVE_HOST: your-upstream-trove
+ TROVE_ID: your-upstream-trove-prefix
+ VCPUS: 2
+ WORKER_SSH_KEY: ssh-keys/worker.key
+ deploy:
+ mason-openstack:
+ type: extensions/openstack
+ location: openstack-auth-url (eg example.com:5000/v2.0)
+ DISK_SIZE: 6G
+ DISTBUILD_CONTROLLER: true
+ HOSTNAME: controller-hostname
+ MASON_CLUSTER_MORPHOLOGY: clusters/ci.morph
+ MASON_DEFINITIONS_REF: master
+ MASON_DISTBUILD_ARCH: x86_64
+ MASON_TEST_HOST: user@openstack-auth-url
+ WORKERS: controller-hostname
+ OPENSTACK_AUTH_URL: openstack-auth-url
+ OPENSTACK_USER: baserock
+ OPENSTACK_TENANT: baserock
+ OPENSTACK_TENANT_ID: 7d7ebfe23367490b973a10fa426c3aec
+ OPENSTACK_IMAGENAME: mason-openstack
+ OPENSTACK_NETWORK_ID: 71f5151a-b7c3-405d-a841-d1b07e5db099
+ CLOUD_INIT: true
+ KERNEL_ARGS: console=ttyS0 console=tty0
+ TEST_INFRASTRUCTURE_TYPE: openstack
diff --git a/trove/clusters/mason.morph b/trove/clusters/mason.morph
new file mode 100644
index 00000000..f69a9e11
--- /dev/null
+++ b/trove/clusters/mason.morph
@@ -0,0 +1,56 @@
+name: example-mason-cluster
+kind: cluster
+description: |
+ This is a template cluster morphology that can be adapted to set up a
+ Mason. Masons are composed of a trove and a distbuild system.
+
+ It is suggested that you use mason/mason-generator.sh to adapt this
+ template to suit your needs. It also handles the generation of
+ keys to let the systems communicate.
+systems:
+- morph: trove/systems/trove-system-x86_64.morph
+ deploy:
+ red-box-v1-trove:
+ type: extensions/kvm
+ location: kvm+ssh://vm-user@vm-host/red-box-v1-trove/vm-path/red-box-v1-trove.img
+ AUTOSTART: true
+ DISK_SIZE: 20G
+ HOSTNAME: red-box-v1-trove
+ LORRY_SSH_KEY: ssh_keys/lorry.key
+ MASON_SSH_PUBKEY: ssh_keys/mason.key.pub
+ RAM_SIZE: 8G
+ TROVE_ADMIN_EMAIL: adminuser@example.com
+ TROVE_ADMIN_NAME: Nobody
+ TROVE_ADMIN_SSH_PUBKEY: ssh_keys/id_rsa.pub
+ TROVE_ADMIN_USER: adminuser
+ TROVE_COMPANY: Company name goes here
+ TROVE_HOST: red-box-v1
+ TROVE_ID: red-box-v1-trove
+ UPSTREAM_TROVE: upstream-trove
+ VCPUS: 2
+ VERSION_LABEL: 45
+ WORKER_SSH_PUBKEY: ssh_keys/worker.key.pub
+- morph: systems/build-system-x86_64.morph
+ deploy-defaults:
+ ARTIFACT_CACHE_SERVER: red-box-v1-trove.example.com
+ CONTROLLERHOST: red-box-v1-controller.example.com
+ DISTBUILD_CONTROLLER: false
+ DISTBUILD_WORKER: true
+ INSTALL_FILES: install-files/distbuild/manifest
+ RAM_SIZE: 8G
+ TROVE_HOST: upstream-trove
+ TROVE_ID: upstream-trove
+ VCPUS: 2
+ WORKER_SSH_KEY: ssh_keys/worker.key
+ deploy:
+ red-box-v1-controller:
+ type: extensions/kvm
+ location: kvm+ssh://vm-user@vm-host/red-box-v1-controller/vm-path/red-box-v1-controller.img
+ DISK_SIZE: 60G
+ DISTBUILD_CONTROLLER: true
+ HOSTNAME: red-box-v1-controller
+ MASON_CLUSTER_MORPHOLOGY: clusters/ci.morph
+ MASON_DEFINITIONS_REF: master
+ MASON_DISTBUILD_ARCH: x86_64
+ MASON_TEST_HOST: vm-user@vm-host:/vm-path/
+ WORKERS: red-box-v1-controller
diff --git a/trove/clusters/trove-example.morph b/trove/clusters/trove-example.morph
new file mode 100644
index 00000000..13171846
--- /dev/null
+++ b/trove/clusters/trove-example.morph
@@ -0,0 +1,58 @@
+name: trove-example
+kind: cluster
+description: |
+ This is an example cluster morphology for deploying a Trove,
+ both the initial deployment and an upgrade.
+
+ You need some ssh keys, which you can create like this:
+
+ mkdir ssh_keys
+ ssh-keygen -N '' -f ssh_keys/lorry.key
+ ssh-keygen -N '' -f ssh_keys/worker.key
+ ssh-keygen -N '' -f ssh_keys/trove-admin.key
+
+ You may also put in your own keys instead of creating new ones.
+
+ To do the initial deployment:
+
+ morph deploy clusters/trove-example.morph \
+ initial \
+ initial.location=kvm+ssh://liw@192.168.122.1/test-trove/tmp/test-trove.img
+
+ To do an upgrade:
+
+ morph deploy clusters/trove-example.morph \
+ upgrade upgrade.VERSION_LABEL=123
+
+ where `VERSION_LABEL` gets a new unique value each time.
+
+ Remember to always specify either initial or upgrade as the
+ deployment name to use, otherwise morph will attempt to deploy both.
+
+ You can find documentation for Trove at the following web address:
+ http://wiki.baserock.org/Trove/
+systems:
+- morph: trove/systems/trove-system-x86_64.morph
+ deploy-defaults:
+ HOSTNAME: test-trove
+ VCPUS: 2
+ RAM_SIZE: 2G
+ DISK_SIZE: 8G
+ LORRY_SSH_KEY: ssh_keys/lorry.key
+ WORKER_SSH_PUBKEY: ssh_keys/worker.key.pub
+ TROVE_ADMIN_EMAIL: adminuser@example.com
+ TROVE_ADMIN_NAME: Nobody
+ TROVE_ADMIN_SSH_PUBKEY: ssh_keys/trove-admin.key.pub
+ TROVE_ADMIN_USER: adminuser
+ TROVE_COMPANY: Company name goes here
+ TROVE_HOST: test-trove
+ TROVE_ID: test-trove
+ UPSTREAM_TROVE: ''
+ deploy:
+ initial:
+ type: extensions/kvm
+ location: kvm+ssh://vm-user@vm-host/test-trove/vm-path/test-trove.img
+ VERSION_LABEL: 1
+ upgrade:
+ type: extensions/ssh-rsync
+ location: test-trove
diff --git a/trove/clusters/trove.baserock.org-upgrade.morph b/trove/clusters/trove.baserock.org-upgrade.morph
new file mode 100644
index 00000000..cfd5d1cb
--- /dev/null
+++ b/trove/clusters/trove.baserock.org-upgrade.morph
@@ -0,0 +1,19 @@
+name: trove.baserock.org-upgrade
+kind: cluster
+description: |
+ This is a cluster morphology for deploying an UPGRADE to
+ git.baserock.org. It doesn't work for the initial deployment. The
+ deployer MUST have ssh access to root@git.baserock.org. To use:
+
+ morph upgrade clusters/trove.baserock.org-upgrade.morph gbo.VERSION_LABEL=2014-05-29
+
+ Replace the value of gbo.VERSION_LABEL above with the current date.
+ You can add letters if you need to upgrade multiple times in a day.
+systems:
+- morph: trove/systems/trove-system-x86_64.morph
+ deploy:
+ gbo:
+ upgrade-type: extensions/ssh-rsync
+ upgrade-location: root@git.baserock.org
+ HOSTNAME: baserock
+ TROVE_GENERIC: True
diff --git a/trove/strata/fail2ban-common.morph b/trove/strata/fail2ban-common.morph
new file mode 100644
index 00000000..23918a66
--- /dev/null
+++ b/trove/strata/fail2ban-common.morph
@@ -0,0 +1,14 @@
+name: fail2ban-common
+kind: stratum
+description: |
+ This stratum only installs fail2ban. You will need to
+ configure it afterwards. It's recommended to include
+ iptables in the system too.
+build-depends:
+- morph: strata/core.morph
+chunks:
+- name: fail2ban
+ morph: trove/strata/fail2ban-common/fail2ban.morph
+ repo: upstream:fail2ban
+ ref: 70ba5cb0054f0869930b8cd2dc1bb836653dd289
+ unpetrify-ref: "0.9.3"
diff --git a/trove/strata/fail2ban-common/fail2ban.morph b/trove/strata/fail2ban-common/fail2ban.morph
new file mode 100644
index 00000000..2f267a5a
--- /dev/null
+++ b/trove/strata/fail2ban-common/fail2ban.morph
@@ -0,0 +1,6 @@
+name: fail2ban
+kind: chunk
+build-system: python3-distutils
+post-install-commands:
+- install -D -m 640 files/fail2ban.service "$DESTDIR"/"$PREFIX"/lib/systemd/system/fail2ban.service
+- install -D -m 640 files/fail2ban-tmpfiles.conf "$DESTDIR"/"$PREFIX"/lib/tmpfiles.d/fail2ban.conf
diff --git a/trove/strata/lorry-controller.morph b/trove/strata/lorry-controller.morph
new file mode 100644
index 00000000..87d3ed00
--- /dev/null
+++ b/trove/strata/lorry-controller.morph
@@ -0,0 +1,16 @@
+name: lorry-controller
+kind: stratum
+description: |
+ Lorry Controller mirroring service.
+
+ This is a component of Trove, but can
+ also be used with other Git servers.
+build-depends:
+- morph: strata/python-cliapp.morph
+- morph: strata/python-wsgi.morph
+chunks:
+- name: lorry-controller
+ morph: trove/strata/lorry-controller/lorry-controller.morph
+ repo: baserock:baserock/lorry-controller
+ ref: dddd2e37953d795e4004b1d2722c25ec652135ad
+ unpetrify-ref: master
diff --git a/trove/strata/lorry-controller/lorry-controller.morph b/trove/strata/lorry-controller/lorry-controller.morph
new file mode 100644
index 00000000..2f90a9a1
--- /dev/null
+++ b/trove/strata/lorry-controller/lorry-controller.morph
@@ -0,0 +1,10 @@
+name: lorry-controller
+kind: chunk
+build-system: python-distutils
+post-install-commands:
+- install -d 0755 "$DESTDIR/etc/lighttpd"
+- install -m 0644 -D etc/lighttpd/*.conf "$DESTDIR/etc/lighttpd/."
+- |
+ TGT="$DESTDIR/usr/lib/systemd/system"
+ install -d "$TGT/multi-user.target.wants"
+ install -m 0644 units/*.service units/*.timer "$TGT/."
diff --git a/trove/strata/python3-core.morph b/trove/strata/python3-core.morph
new file mode 100644
index 00000000..afacc3da
--- /dev/null
+++ b/trove/strata/python3-core.morph
@@ -0,0 +1,58 @@
+name: python3-core
+kind: stratum
+description: |
+ Some "core" Python packages, for Python 3.
+
+ The CPython interpreter for Python 3 is in core.morph.
+
+build-depends:
+- morph: strata/core.morph
+
+chunks:
+- name: mako
+ repo: upstream:python-packages/mako.git
+ ref: 285bc818a50ccc0f9549630f7c4f4c250585c3e7
+ unpetrify-ref: rel_1_0_0
+ build-system: python3-distutils
+
+- name: pbr
+ repo: upstream:pbr
+ ref: 6e472b4905411a39e993c81c382a27ca9c771ef5
+ unpetrify-ref: 0.11.1
+ build-system: python3-distutils
+
+- name: python-requests
+ repo: upstream:python-requests
+ ref: b83131779c701720a9ae9efae78996277d416269
+ unpetrify-ref: v2.5.1
+ build-system: python3-distutils
+
+- name: six
+ repo: upstream:six
+ ref: 8cfbff6b764af86d825086fa1637aa009e90d75a
+ unpetrify-ref: 1.9.0
+ build-system: python3-distutils
+
+- name: pyyaml
+ morph: trove/strata/python3-core/pyyaml.morph
+ repo: upstream:pyyaml
+ ref: d9fbcceaed39d955f6871b07c61dc42f824285c1
+ unpetrify-ref: baserock/morph
+
+- name: python-lxml
+ repo: upstream:python-lxml
+ ref: 14505bc62f5f1fc9fb0ff007955f3e67ab4562bb
+ unpetrify-ref: lxml-3.4.0
+ build-system: python3-distutils
+
+- name: python-markdown
+ repo: upstream:python-markdown
+ ref: f0c5b71acbc02af60a33d67c59558bb513b25e74
+ unpetrify-ref: 2.5.1-final
+ build-system: python3-distutils
+
+- name: jsonschema
+ repo: upstream:jsonschema
+ ref: 35b60f390098d3306c03eee27ceec8cf8a493579
+ unpetrify-ref: v2.3.0
+ build-system: python3-distutils
diff --git a/trove/strata/python3-core/pyyaml.morph b/trove/strata/python3-core/pyyaml.morph
new file mode 100644
index 00000000..001f392c
--- /dev/null
+++ b/trove/strata/python3-core/pyyaml.morph
@@ -0,0 +1,6 @@
+name: pyyaml
+kind: chunk
+build-commands:
+- python3 setup.py --without-libyaml build
+install-commands:
+- python3 setup.py --without-libyaml install --prefix="$PREFIX" --root "$DESTDIR"
diff --git a/trove/strata/trove.morph b/trove/strata/trove.morph
new file mode 100644
index 00000000..8306c630
--- /dev/null
+++ b/trove/strata/trove.morph
@@ -0,0 +1,101 @@
+name: trove
+kind: stratum
+description: Trove software
+build-depends:
+- morph: strata/python2-core.morph
+- morph: strata/tools.morph
+- morph: strata/morph-utils.morph
+- morph: strata/pcre-utils.morph
+chunks:
+- name: lua
+ morph: trove/strata/trove/lua.morph
+ repo: upstream:lua
+ ref: 948063437e0350d9ef1649ec3a76d0c24a5c8642
+ unpetrify-ref: baserock/5.1-morph
+- name: lace
+ morph: trove/strata/trove/lace.morph
+ repo: upstream:gitano/lace
+ ref: d1b540b6d361d6a1f51e53cdaab69f053340efbb
+ unpetrify-ref: baserock/morph
+ build-depends:
+ - lua
+ submodules:
+ extras/luacov:
+ url: upstream:gitano/luacov
+- name: luxio
+ morph: trove/strata/trove/luxio.morph
+ repo: upstream:luxio
+ ref: be9d125080b9ff2376273e21b75669b65dc88d46
+ unpetrify-ref: baserock/morph
+ build-depends:
+ - lua
+- name: supple
+ morph: trove/strata/trove/supple.morph
+ repo: upstream:gitano/supple
+ ref: 0963e5706d78d0ae7446ea91af986de1e196eb39
+ unpetrify-ref: baserock/morph
+ build-depends:
+ - lua
+ - luxio
+ submodules:
+ extras/luacov:
+ url: upstream:gitano/luacov
+- name: clod
+ morph: trove/strata/trove/clod.morph
+ repo: upstream:gitano/clod
+ ref: da15894f42f48d15db997c4355d6b672371a4163
+ unpetrify-ref: baserock/morph
+ build-depends:
+ - lua
+ submodules:
+ extras/luacov:
+ url: upstream:gitano/luacov
+- name: gall
+ morph: trove/strata/trove/gall.morph
+ repo: upstream:gitano/gall
+ ref: 11de77bd79c08a152932a3435d1921abc1020252
+ unpetrify-ref: baserock/morph
+ build-depends:
+ - lua
+ - luxio
+ submodules:
+ libgit2:
+ url: upstream:gitano/libgit2
+ luagit2:
+ url: upstream:gitano/luagit2
+ extras/luacov:
+ url: upstream:gitano/luacov
+- name: lrexlib-pcre
+ morph: trove/strata/trove/lrexlib-pcre.morph
+ repo: upstream:lrexlib
+ ref: 0524a6e3ab6d50cba63c8642a875e246de53d651
+ unpetrify-ref: baserock/morph
+ build-depends:
+ - lua
+- name: gitano
+ morph: trove/strata/trove/gitano.morph
+ repo: upstream:gitano/gitano
+ ref: 4b8ce6875266fdd6609a217dcf2924d7d4815cc2
+ unpetrify-ref: baserock/morph
+ build-depends:
+ - lua
+- name: cgit
+ morph: trove/strata/trove/cgit.morph
+ repo: upstream:cgit
+ ref: dc881acb0c857c783b611c03294d79a7553a4ec7
+ unpetrify-ref: baserock/v0.12
+ submodules:
+ git:
+ url: upstream:git
+- name: trove-setup
+ morph: trove/strata/trove/trove-setup.morph
+ repo: baserock:baserock/trove-setup
+ ref: 1f2edd45b03a3e9d86d7c77847612c969b60b86f
+ unpetrify-ref: master
+- name: lua-scrypt
+ morph: trove/strata/trove/lua-scrypt.morph
+ repo: upstream:lua-scrypt
+ ref: 0d7f74cd3eab7d54fbb13294194de7ea70ac34a5
+ unpetrify-ref: baserock/morph
+ build-depends:
+ - lua
diff --git a/trove/strata/trove/cgit.morph b/trove/strata/trove/cgit.morph
new file mode 100644
index 00000000..bd373a51
--- /dev/null
+++ b/trove/strata/trove/cgit.morph
@@ -0,0 +1,6 @@
+name: cgit
+kind: chunk
+build-commands:
+- make prefix="$PREFIX"
+install-commands:
+- make prefix="$PREFIX" DESTDIR="$DESTDIR" install
diff --git a/trove/strata/trove/clod.morph b/trove/strata/trove/clod.morph
new file mode 100644
index 00000000..e31ca4fb
--- /dev/null
+++ b/trove/strata/trove/clod.morph
@@ -0,0 +1,7 @@
+name: clod
+kind: chunk
+description: Configuration Language Organised (by) Dots.
+build-commands:
+- make
+install-commands:
+- make INST_BASE="$PREFIX" DESTDIR="$DESTDIR" install
diff --git a/trove/strata/trove/gall.morph b/trove/strata/trove/gall.morph
new file mode 100644
index 00000000..c1f2fd47
--- /dev/null
+++ b/trove/strata/trove/gall.morph
@@ -0,0 +1,7 @@
+name: gall
+kind: chunk
+description: Git Abstraction Layer for Lua
+build-commands:
+- make
+install-commands:
+- make INST_BASE="$PREFIX" DESTDIR="$DESTDIR" install
diff --git a/trove/strata/trove/gitano.morph b/trove/strata/trove/gitano.morph
new file mode 100644
index 00000000..962224d5
--- /dev/null
+++ b/trove/strata/trove/gitano.morph
@@ -0,0 +1,5 @@
+name: gitano
+kind: chunk
+install-commands:
+- make install INST_ROOT="$PREFIX" DESTDIR="$DESTDIR"
+- cp scripts/htpasswd "$DESTDIR/$PREFIX/bin"
diff --git a/trove/strata/trove/lace.morph b/trove/strata/trove/lace.morph
new file mode 100644
index 00000000..70752397
--- /dev/null
+++ b/trove/strata/trove/lace.morph
@@ -0,0 +1,7 @@
+name: lace
+kind: chunk
+description: Lua Access Control Engine.
+build-commands:
+- make
+install-commands:
+- make INST_BASE="$PREFIX" DESTDIR="$DESTDIR" install
diff --git a/trove/strata/trove/lrexlib-pcre.morph b/trove/strata/trove/lrexlib-pcre.morph
new file mode 100644
index 00000000..63f3b034
--- /dev/null
+++ b/trove/strata/trove/lrexlib-pcre.morph
@@ -0,0 +1,9 @@
+name: lrexlib-pcre
+kind: chunk
+description: Lua regular expression library - PCRE build only
+build-commands:
+- gcc -fPIC -DPIC -DVERSION=\"2.7.2\" -o rex_pcre.so -shared src/common.c src/pcre/lpcre.c
+ src/pcre/lpcre_f.c -lpcre
+install-commands:
+- mkdir -p $DESTDIR/usr/lib/lua/5.1/
+- cp rex_pcre.so $DESTDIR/usr/lib/lua/5.1/
diff --git a/trove/strata/trove/lua-scrypt.morph b/trove/strata/trove/lua-scrypt.morph
new file mode 100644
index 00000000..141b8ec3
--- /dev/null
+++ b/trove/strata/trove/lua-scrypt.morph
@@ -0,0 +1,4 @@
+name: lua-scrypt
+kind: chunk
+install-commands:
+- make lua-5.1-install DESTDIR="$DESTDIR"
diff --git a/trove/strata/trove/lua.morph b/trove/strata/trove/lua.morph
new file mode 100644
index 00000000..32aeb5c1
--- /dev/null
+++ b/trove/strata/trove/lua.morph
@@ -0,0 +1,11 @@
+name: lua
+kind: chunk
+configure-commands:
+- sed -e 's/defined(LUA_USE_READLINE)/0/g' src/luaconf.h.orig >src/luaconf.h
+- sed -i -e '/^linux:/{n;s/-lreadline//g;s/-lhistory//g;s/-lncurses//g}' src/Makefile
+build-commands:
+- make debian_linux INSTALL_TOP="$PREFIX" RPATH="$PREFIX/lib"
+install-commands:
+- make INSTALL_TOP="$DESTDIR/$PREFIX" debian_install
+- mkdir -p "$DESTDIR/$PREFIX/lib/pkgconfig"
+- cp lua5.1.pc "$DESTDIR/$PREFIX/lib/pkgconfig/"
diff --git a/trove/strata/trove/luxio.morph b/trove/strata/trove/luxio.morph
new file mode 100644
index 00000000..29aabfaf
--- /dev/null
+++ b/trove/strata/trove/luxio.morph
@@ -0,0 +1,7 @@
+name: luxio
+kind: chunk
+description: Lua Unix IO (and related stuff).
+build-commands:
+- make lua-5.1
+install-commands:
+- make DESTDIR="$DESTDIR" lua-5.1-install
diff --git a/trove/strata/trove/supple.morph b/trove/strata/trove/supple.morph
new file mode 100644
index 00000000..6470ba28
--- /dev/null
+++ b/trove/strata/trove/supple.morph
@@ -0,0 +1,7 @@
+name: supple
+kind: chunk
+description: Sandbox (for) Untrusted Procedure Partitioning (in) Lua Engine.
+build-commands:
+- make
+install-commands:
+- make INST_BASE="$PREFIX" DESTDIR="$DESTDIR" install
diff --git a/trove/strata/trove/trove-setup.morph b/trove/strata/trove/trove-setup.morph
new file mode 100644
index 00000000..1f49760f
--- /dev/null
+++ b/trove/strata/trove/trove-setup.morph
@@ -0,0 +1,4 @@
+name: trove-setup
+kind: chunk
+install-commands:
+- make install DESTDIR="$DESTDIR"
diff --git a/trove/systems/trove-system-x86_64.morph b/trove/systems/trove-system-x86_64.morph
new file mode 100644
index 00000000..fa691d62
--- /dev/null
+++ b/trove/systems/trove-system-x86_64.morph
@@ -0,0 +1,65 @@
+name: trove-system-x86_64
+kind: system
+description: Trove server
+arch: x86_64
+strata:
+- name: build-essential
+ morph: strata/build-essential.morph
+- name: bsp-x86_64-generic
+ morph: strata/bsp-x86_64-generic.morph
+- name: foundation
+ morph: strata/foundation.morph
+- name: core
+ morph: strata/core.morph
+- name: python2-core
+ morph: strata/python2-core.morph
+- name: python3-core
+ morph: trove/strata/python3-core.morph
+- name: tools
+ morph: strata/tools.morph
+- name: python-cliapp
+ morph: strata/python-cliapp.morph
+- name: python-pygobject
+ morph: strata/python-pygobject.morph
+- name: python-wsgi
+ morph: strata/python-wsgi.morph
+- name: libsoup-common
+ morph: strata/libsoup-common.morph
+- name: glib-common
+ morph: strata/glib-common.morph
+- name: pcre-utils
+ morph: strata/pcre-utils.morph
+- name: ostree-core
+ morph: strata/ostree-core.morph
+- name: morph-utils
+ morph: strata/morph-utils.morph
+- name: lorry
+ morph: strata/lorry.morph
+- name: lorry-controller
+ morph: trove/strata/lorry-controller.morph
+- name: trove
+ morph: trove/strata/trove.morph
+- name: lighttpd-server
+ morph: strata/lighttpd-server.morph
+- name: nfs
+ morph: strata/nfs.morph
+- name: python-common
+ morph: strata/python-common.morph
+- name: ansible
+ morph: strata/ansible.morph
+- name: cloudinit-support
+ morph: strata/cloudinit-support.morph
+- name: devtools
+ morph: strata/devtools.morph
+- name: fail2ban-common
+ morph: trove/strata/fail2ban-common.morph
+- name: connectivity
+ morph: strata/connectivity.morph
+configuration-extensions:
+- extensions/set-hostname
+- extensions/trove
+- extensions/nfsboot-server
+- extensions/fstab
+- extensions/install-files
+- extensions/cloud-init
+- extensions/install-essential-files