test/mult-install.sh
author J. Ali Harlow <ali@juiblex.co.uk>
Sat Oct 04 18:12:58 2014 +0100 (2014-10-04)
changeset 454 56ff755c268c
parent 387 ef9237601f24
child 456 bae5adee8c8c
permissions -rwxr-xr-x
Only export symbols starting with razor_ in dynamic library.

Apart from being good practice to avoid clashes with higher-level
libraries and the application, this also fixes an obscure bug: The
gnulib library is used both by librazor (the dynamic library) and
by razor (the executable). In doing so, we want to have two separate
copies of the library despite the code duplication this involves.
Without the explicit limit to export only razor_ symbols, the razor
executable under mingw64 was picking up the getopt_long function
from librazor and the optind variable from libgnu which meant that
it did not see optind changing. Hiding librazor's copy of getopt
causes the linker to find libgnu's copy and everything works.

Note that under mingw librazor-#.dll still contains undocumented
(private) razor_ symbols but these will do no harm as long as nobody
tries to use them.
ali@387
     1
#!/bin/sh
ali@387
     2
fs_check_file()
ali@387
     3
{
ali@387
     4
    if [ ! -e "$RAZOR_ROOT$1" ]; then 
ali@387
     5
	echo $1: Not in filesystem >&2
ali@387
     6
	ls -R "$RAZOR_ROOT" >&2
ali@387
     7
	exit 1
ali@387
     8
    fi
ali@387
     9
}
ali@387
    10
fs_check_file_contents()
ali@387
    11
{
ali@387
    12
    fs_check_file "$1"
ali@387
    13
    if [ `cat "$RAZOR_ROOT$1"` != "$2" ]; then
ali@387
    14
	echo $1: Unexpected contents >&2
ali@387
    15
	cat "$RAZOR_ROOT$1" >&2
ali@387
    16
	exit 1
ali@387
    17
    fi
ali@387
    18
}
ali@387
    19
fs_check_no_file()
ali@387
    20
{
ali@387
    21
    if [ -e "$RAZOR_ROOT$1" ]; then 
ali@387
    22
	echo $1: Still in filesystem >&2
ali@387
    23
	exit 1
ali@387
    24
    fi
ali@387
    25
}
ali@387
    26
check_file()
ali@387
    27
{
ali@387
    28
    ../src/razor list-files | grep -x "$1" > /dev/null
ali@387
    29
    if [ $? -ne 0 ]; then
ali@387
    30
	echo $1: Not in database >&2
ali@387
    31
	../src/razor list-files >&2
ali@387
    32
	exit 1
ali@387
    33
    fi
ali@387
    34
    ../src/razor list-files "$1" | grep -x "$1" > /dev/null
ali@387
    35
    if [ $? -ne 0 ]; then
ali@387
    36
	echo $1: Not seen by patterned list >&2
ali@387
    37
	../src/razor list-files "$1" >&2
ali@387
    38
	exit 1
ali@387
    39
    fi
ali@387
    40
    pkgs=`../src/razor list-file-packages "$1"`
ali@387
    41
    if [ -z "$pkgs" ]; then
ali@387
    42
	echo $1: Not owned by any package >&2
ali@387
    43
	../src/razor list-file-packages "$1"
ali@387
    44
	exit 1
ali@387
    45
    fi
ali@387
    46
    for nevra in "$pkgs"; do
ali@387
    47
	name=`echo $nevra | sed 's/\-.*$//'`
ali@387
    48
	../src/razor list-package-files "$name" | grep -x "$1" > /dev/null
ali@387
    49
	if [ $? -ne 0 ]; then
ali@387
    50
	    echo $1: Not in database for package $name >&2
ali@387
    51
	    ../src/razor list-package-files "$name"
ali@387
    52
	    exit 1
ali@387
    53
	fi
ali@387
    54
    done
ali@387
    55
    fs_check_file $1
ali@387
    56
}
ali@387
    57
check_no_file()
ali@387
    58
{
ali@387
    59
    ../src/razor list-files | grep -x "$1" > /dev/null
ali@387
    60
    if [ $? -eq 0 ]; then
ali@387
    61
	echo $1: Still in database >&2
ali@387
    62
	exit 1
ali@387
    63
    fi
ali@387
    64
    fs_check_no_file $1
ali@387
    65
}
ali@389
    66
check_install_count()
ali@389
    67
{
ali@389
    68
    count=`../src/razor list "$1" | wc -l`
ali@389
    69
    if [ "$count" != "$2" ]; then
ali@389
    70
	echo $1: Install count $count, should be $2 >&2
ali@389
    71
	exit 1
ali@389
    72
    fi
ali@389
    73
}
ali@387
    74
export RAZOR_ROOT=`mktemp -dt` || exit 1
ali@387
    75
../src/razor init || exit 1
ali@387
    76
export YUM_URL="file://localhost/`pwd`"
ali@387
    77
../src/razor import-yum || exit 1
ali@387
    78
../src/razor install --relocate /usr=/opt zip || exit 1
ali@387
    79
fs_check_file_contents /opt/bin/zip zip-1-1
ali@387
    80
fs_check_file /opt/var/lib/zip/data.zap
ali@387
    81
../src/razor install --relocate /usr=/opt zip || exit 1
ali@389
    82
check_install_count zip 2
ali@387
    83
../src/razor install --relocate /usr=/opt zip || exit 1
ali@389
    84
check_install_count zip 3
ali@387
    85
rm -rf "$RAZOR_ROOT"