test/named-root.sh
author J. Ali Harlow <ali@juiblex.co.uk>
Thu Feb 09 20:45:27 2012 +0000 (2012-02-09)
changeset 418 33b825d3128d
child 456 bae5adee8c8c
permissions -rwxr-xr-x
Add transaction barriers
These allow packages to be installed and removed which have scripts
that depend on each other when atomic transactions are involved.
Note that yum supports pre, but not other requires flags. post will
need similar support to the post scripts themselves pulling in the
requires flags from the rpms. Likewise preun and postun will need
similar handling to those scrips since the requires flags will need
to be stored in the razor database.
ali@359
     1
#!/bin/sh
ali@359
     2
check_file()
ali@359
     3
{
ali@359
     4
    ../src/razor list-files | grep -x "$1" > /dev/null
ali@359
     5
    if [ $? -ne 0 ]; then
ali@359
     6
	echo $1: Not in database >&2
ali@359
     7
	../src/razor list-files >&2
ali@359
     8
	exit 1
ali@359
     9
    fi
ali@359
    10
    ../src/razor list-files c: | grep -x "$1" > /dev/null
ali@359
    11
    if [ $? -ne 0 ]; then
ali@359
    12
	echo $1: Not seen by named root list >&2
ali@359
    13
	../src/razor list-files c: >&2
ali@359
    14
	exit 1
ali@359
    15
    fi
ali@359
    16
    ../src/razor list-files "$1" | grep -x "$1" > /dev/null
ali@359
    17
    if [ $? -ne 0 ]; then
ali@359
    18
	echo $1: Not seen by patterned list >&2
ali@359
    19
	../src/razor list-files "$1" >&2
ali@359
    20
	exit 1
ali@359
    21
    fi
ali@359
    22
    pkgs=`../src/razor list-file-packages "$1"`
ali@359
    23
    if [ -z "$pkgs" ]; then
ali@359
    24
	echo $1: Not owned by any package >&2
ali@359
    25
	../src/razor list-file-packages "$1"
ali@359
    26
	exit 1
ali@359
    27
    fi
ali@359
    28
    for nevra in "$pkgs"; do
ali@359
    29
	name=`echo $nevra | sed 's/\-.*$//'`
ali@359
    30
	../src/razor list-package-files "$name" | grep -x "$1" > /dev/null
ali@359
    31
	if [ $? -ne 0 ]; then
ali@359
    32
	    echo $1: Not in database for package $name >&2
ali@359
    33
	    ../src/razor list-package-files "$name"
ali@359
    34
	    exit 1
ali@359
    35
	fi
ali@359
    36
    done
ali@359
    37
    if [ ! -e "$RAZOR_ROOT$1" ]; then 
ali@359
    38
	echo $1: Not in filesystem >&2
ali@359
    39
	exit 1
ali@359
    40
    fi
ali@359
    41
}
ali@359
    42
tmpdir=`mktemp -dt` || exit 1
ali@359
    43
export RAZOR_ROOT="$tmpdir/x-"
ali@359
    44
mkdir -p "$tmpdir/x-/var/lib" "$tmpdir/x-c:"
ali@359
    45
export RAZOR_NO_ROOT_NAME_CHECKS=1
ali@359
    46
../src/razor init || exit 1
ali@359
    47
export YUM_URL="file://localhost/`pwd`"
ali@359
    48
../src/razor import-yum || exit 1
ali@359
    49
../src/razor install --relocate /usr=c:/test zap || exit 1
ali@359
    50
../src/razor install --relocate /usr=c:/test zip || exit 1
ali@359
    51
check_file c:/test/bin/zap
ali@359
    52
check_file c:/test/bin/zip
ali@359
    53
rm -rf "$tmpdir"