#!/bin/bash # # Create git repositories for tests. The chunk repository will contain a # simple "hello, world" C program, and two branches ("master", "farrokh"), # with the master branch containing just a README. The two branches are there # so that we can test building a branch that hasn't been checked out. # The branches are different so that we know that if the wrong branch # is uses, the build will fail. # # The stratum repository contains a single branch, "master", with a # stratum and a system morphology that include the chunk above. # # Copyright (C) 2011, 2012, 2013, 2014 Codethink Limited # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. set -eu source "$SRCDIR/scripts/fix-committer-info" # The $DATADIR should be empty at the beginnig of each test. find "$DATADIR" -mindepth 1 -delete # Create an empty directory to be used as a morph workspace mkdir "$DATADIR/workspace" # Create chunk repository. chunkrepo="$DATADIR/chunk-repo" mkdir "$chunkrepo" cd "$chunkrepo" git init --quiet cat < README This is a sample README. EOF git add README git commit --quiet -m "add README" git checkout --quiet -b farrokh cat < hello.c #include int main(void) { puts("hello, world"); return 0; } EOF git add hello.c cat < hello.morph name: hello kind: chunk build-system: dummy build-commands: - gcc -o hello hello.c install-commands: - install -d "\$DESTDIR/etc" - install -d "\$DESTDIR/bin" - install hello "\$DESTDIR/bin/hello" EOF git add hello.morph git commit --quiet -m "add a hello world program and morph" git checkout --quiet master # Create morph repository. morphsrepo="$DATADIR/morphs" mkdir "$morphsrepo" cd "$morphsrepo" git init --quiet cat < hello-stratum.morph name: hello-stratum kind: stratum chunks: - name: hello repo: test:chunk-repo ref: farrokh build-depends: [] build-mode: test EOF git add hello-stratum.morph cat < hello-system.morph name: hello-system kind: system arch: $("$SRCDIR/scripts/test-morph" print-architecture) strata: - morph: hello-stratum EOF git add hello-system.morph cat < linux-stratum.morph name: linux-stratum kind: stratum build-depends: - morph: hello-stratum chunks: - name: linux repo: test:kernel-repo ref: master build-depends: [] build-mode: test EOF git add linux-stratum.morph cat < linux-system.morph name: linux-system kind: system arch: $("$SRCDIR/scripts/test-morph" print-architecture) strata: - morph: hello-stratum - morph: linux-stratum configuration-extensions: - set-hostname EOF git add linux-system.morph cat < rawdisk_test_cluster.morph name: rawdisk_test_cluster kind: cluster systems: - morph: linux-system deploy: linux-system-1: type: rawdisk location: disk.img DISK_SIZE: 1G EOF git add rawdisk_test_cluster.morph cat < rawdisk_test_cluster_without_disk_size.morph name: rawdisk_test_cluster_without_disk_size kind: cluster systems: - morph: linux-system deploy: linux-system-1: type: rawdisk location: disk.img EOF git add rawdisk_test_cluster_without_disk_size.morph cat < test_cluster.morph name: test_cluster kind: cluster systems: - morph: hello-system deploy-defaults: type: tar deploy: hello-system: type: rawdisk location: hello-system.img DISK_SIZE: 1G - morph: linux-system deploy-defaults: HOSTNAME: "baserock-rocks" deploy: linux-system-1: type: tar location: linux-system-1.tar linux-system-2: type: tar location: linux-system-2.tar EOF git add test_cluster.morph git commit --quiet -m "add morphs" # Make a dummy kernel chunk. mkdir "$DATADIR/kernel-repo" cat < "$DATADIR/kernel-repo/linux.morph" name: linux kind: chunk install-commands: - mkdir -p "\$DESTDIR/boot" - touch "\$DESTDIR/extlinux.conf" - touch "\$DESTDIR/boot/vmlinuz" - touch "\$DESTDIR/boot/System.map" EOF "$SRCDIR/scripts/run-git-in" "$DATADIR/kernel-repo" init --quiet "$SRCDIR/scripts/run-git-in" "$DATADIR/kernel-repo" add . "$SRCDIR/scripts/run-git-in" "$DATADIR/kernel-repo" commit --quiet -m foo \ > /dev/null # Create a morph configuration file. cat < "$DATADIR/morph.conf" [config] repo-alias = test=file://$DATADIR/#file://$DATADIR/ cachedir = $DATADIR/cache log = $DATADIR/morph.log no-distcc = true quiet = true log = /tmp/morph.log EOF