#!/bin/sh # # Copyright (C) 2011-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. # If a system has multiple strata that have the same files in them, # then this should be noted. set -eu cache="$DATADIR/cache/artifacts" chunkrepo="$DATADIR/chunk-repo" morphsrepo="$DATADIR/morphs" cd "$morphsrepo" git checkout --quiet -b overlap master cat <overlap-system.morph name: overlap-system kind: system arch: $("$SRCDIR/scripts/test-morph" print-architecture) strata: - morph: foo-baz-stratum - morph: foo-barqux-stratum EOF cat <foo-baz-stratum.morph name: foo-baz-stratum kind: stratum chunks: - name: overlap-foo-baz repo: test:chunk-repo ref: overlap build-mode: test build-depends: [] - name: linux repo: test:kernel-repo ref: master build-mode: test build-depends: - overlap-foo-baz EOF cat <foo-barqux-stratum.morph name: foo-barqux-stratum kind: stratum chunks: - name: overlap-foobar repo: test:chunk-repo ref: overlap build-mode: test build-depends: [] - name: overlap-fooqux repo: test:chunk-repo ref: overlap build-mode: test build-depends: - overlap-foobar EOF git add overlap-system.morph foo-baz-stratum.morph foo-barqux-stratum.morph git commit --quiet -m "add overlapping system" cd "$chunkrepo" git checkout --quiet -b overlap master cat <overlap-foo-baz.morph name: overlap-foo-baz kind: chunk install-commands: - mkdir -p "\$DESTDIR"/bin - for f in foo bar baz; do echo echo \$f >"\$DESTDIR"/bin/\$f; done EOF cat <overlap-foobar.morph name: overlap-foobar kind: chunk install-commands: - mkdir -p "\$DESTDIR"/usr/bin "\$DESTDIR"/bin - echo echo foobar >"\$DESTDIR"/usr/bin/foobar - ln -s /usr/bin/foobar "\$DESTDIR"/bin/foo - ln -s /usr/bin/foobar "\$DESTDIR"/bin/bar EOF cat <overlap-fooqux.morph name: overlap-fooqux kind: chunk install-commands: - mkdir -p "\$DESTDIR"/usr/bin "\$DESTDIR"/bin - for f in qux fooqux; do echo echo \$f >"\$DESTDIR"/usr/bin/\$f; done - ln -s /usr/bin/fooqux "\$DESTDIR"/bin/foo EOF git add overlap-*.morph git commit --quiet -m 'Add overlapping chunks' "$SRCDIR/scripts/test-morph" \ build-morphology test:morphs overlap overlap-system > /dev/null "$SRCDIR/scripts/list-overlaps" groups \ "$cache"/*.system.overlap-system*.overlaps | while IFS='\n' read overlaps; do echo $overlaps "$SRCDIR/scripts/list-overlaps" list-files \ "$cache"/*.system.overlap-system*.overlaps $overlaps done