test/named-root.sh
author J. Ali Harlow <ali@juiblex.co.uk>
Sat Oct 04 18:12:58 2014 +0100 (2014-10-04)
changeset 454 56ff755c268c
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@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"