Installing posix tests in /usr/tests/minix-posix

The goal is to enable anyone to simply run our current test suite.

Change-Id: I27d8856cb82a4be2baa5dc5273526383b7f4fc2c
This commit is contained in:
Lionel Sambuc 2013-03-08 17:02:27 +01:00
parent fe7b9c06f9
commit 5180c3cfb9
9 changed files with 204 additions and 83 deletions

View file

@ -141,7 +141,7 @@ _SUBDIR= tools lib .WAIT include gnu external crypto/external bin games
_SUBDIR+= libexec sbin usr.bin _SUBDIR+= libexec sbin usr.bin
_SUBDIR+= commands man _SUBDIR+= commands man
_SUBDIR+= common drivers kernel servers _SUBDIR+= common drivers kernel servers
_SUBDIR+= usr.sbin share rescue sys etc tests compat .WAIT distrib regress _SUBDIR+= usr.sbin share rescue sys etc test compat .WAIT distrib regress
.if defined(__MINIX) .if defined(__MINIX)
_SUBDIR+= benchmarks _SUBDIR+= benchmarks

View file

@ -170,3 +170,9 @@
./usr/sbin/ti1225 minix-sys ./usr/sbin/ti1225 minix-sys
./usr/sbin/vbox minix-sys ./usr/sbin/vbox minix-sys
./usr/sbin/virtio_net minix-sys ./usr/sbin/virtio_net minix-sys
./usr/tests/minix-posix/mod minix-sys
./usr/tests/minix-posix/test47 minix-sys
./usr/tests/minix-posix/test51 minix-sys
./usr/tests/minix-posix/test57 minix-sys
./usr/tests/minix-posix/test62 minix-sys
./usr/tests/minix-posix/test63 minix-sys

View file

@ -4520,6 +4520,90 @@
./usr/spool/mail minix-sys ./usr/spool/mail minix-sys
./usr/spool minix-sys ./usr/spool minix-sys
./usr/src minix-sys ./usr/src minix-sys
./usr/tests minix-sys
./usr/tests/minix-posix minix-sys
./usr/tests/minix-posix/run minix-sys
./usr/tests/minix-posix/t10a minix-sys
./usr/tests/minix-posix/t11a minix-sys
./usr/tests/minix-posix/t11b minix-sys
./usr/tests/minix-posix/t40a minix-sys
./usr/tests/minix-posix/t40b minix-sys
./usr/tests/minix-posix/t40c minix-sys
./usr/tests/minix-posix/t40d minix-sys
./usr/tests/minix-posix/t40e minix-sys
./usr/tests/minix-posix/t40f minix-sys
./usr/tests/minix-posix/t60a minix-sys
./usr/tests/minix-posix/t60b minix-sys
./usr/tests/minix-posix/t67a minix-sys
./usr/tests/minix-posix/t67b minix-sys
./usr/tests/minix-posix/t68a minix-sys
./usr/tests/minix-posix/t68b minix-sys
./usr/tests/minix-posix/test1 minix-sys
./usr/tests/minix-posix/test10 minix-sys
./usr/tests/minix-posix/test11 minix-sys
./usr/tests/minix-posix/test12 minix-sys
./usr/tests/minix-posix/test13 minix-sys
./usr/tests/minix-posix/test14 minix-sys
./usr/tests/minix-posix/test15 minix-sys
./usr/tests/minix-posix/test16 minix-sys
./usr/tests/minix-posix/test17 minix-sys
./usr/tests/minix-posix/test18 minix-sys
./usr/tests/minix-posix/test19 minix-sys
./usr/tests/minix-posix/test2 minix-sys
./usr/tests/minix-posix/test20 minix-sys
./usr/tests/minix-posix/test21 minix-sys
./usr/tests/minix-posix/test22 minix-sys
./usr/tests/minix-posix/test23 minix-sys
./usr/tests/minix-posix/test24 minix-sys
./usr/tests/minix-posix/test25 minix-sys
./usr/tests/minix-posix/test26 minix-sys
./usr/tests/minix-posix/test27 minix-sys
./usr/tests/minix-posix/test28 minix-sys
./usr/tests/minix-posix/test29 minix-sys
./usr/tests/minix-posix/test3 minix-sys
./usr/tests/minix-posix/test30 minix-sys
./usr/tests/minix-posix/test31 minix-sys
./usr/tests/minix-posix/test32 minix-sys
./usr/tests/minix-posix/test33 minix-sys
./usr/tests/minix-posix/test34 minix-sys
./usr/tests/minix-posix/test35 minix-sys
./usr/tests/minix-posix/test36 minix-sys
./usr/tests/minix-posix/test37 minix-sys
./usr/tests/minix-posix/test38 minix-sys
./usr/tests/minix-posix/test39 minix-sys
./usr/tests/minix-posix/test4 minix-sys
./usr/tests/minix-posix/test40 minix-sys
./usr/tests/minix-posix/test41 minix-sys
./usr/tests/minix-posix/test42 minix-sys
./usr/tests/minix-posix/test43 minix-sys
./usr/tests/minix-posix/test44 minix-sys
./usr/tests/minix-posix/test45 minix-sys
./usr/tests/minix-posix/test46 minix-sys
./usr/tests/minix-posix/test48 minix-sys
./usr/tests/minix-posix/test49 minix-sys
./usr/tests/minix-posix/test5 minix-sys
./usr/tests/minix-posix/test50 minix-sys
./usr/tests/minix-posix/test52 minix-sys
./usr/tests/minix-posix/test53 minix-sys
./usr/tests/minix-posix/test54 minix-sys
./usr/tests/minix-posix/test55 minix-sys
./usr/tests/minix-posix/test56 minix-sys
./usr/tests/minix-posix/test58 minix-sys
./usr/tests/minix-posix/test59 minix-sys
./usr/tests/minix-posix/test6 minix-sys
./usr/tests/minix-posix/test60 minix-sys
./usr/tests/minix-posix/test61 minix-sys
./usr/tests/minix-posix/test64 minix-sys
./usr/tests/minix-posix/test65 minix-sys
./usr/tests/minix-posix/test66 minix-sys
./usr/tests/minix-posix/test67 minix-sys
./usr/tests/minix-posix/test68 minix-sys
./usr/tests/minix-posix/test7 minix-sys
./usr/tests/minix-posix/test8 minix-sys
./usr/tests/minix-posix/test9 minix-sys
./usr/tests/minix-posix/testinterp minix-sys
./usr/tests/minix-posix/testsh1 minix-sys
./usr/tests/minix-posix/testsh2 minix-sys
./usr/tmp minix-sys ./usr/tmp minix-sys
./usr/var/db minix-sys ./usr/var/db minix-sys
./usr/var/db/pkg minix-sys ./usr/var/db/pkg minix-sys

View file

@ -132,6 +132,8 @@
./usr/spool/lpd ./usr/spool/lpd
./usr/spool/mail ./usr/spool/mail
./usr/src ./usr/src
./usr/tests
./usr/tests/minix-posix
./usr/var ./usr/var
./usr/var/db ./usr/var/db
./usr/var/db/pkg ./usr/var/db/pkg

View file

@ -2,74 +2,75 @@
set -e set -e
if [ `id -u` -ne 0 ] if [ `id -u` -ne 0 ]
then then echo "This script should be running as root calling sudo"
echo "This script should be running as root calling sudo"
sudo $0 sudo $0
exit 1 exit 1
fi fi
MP_MINIX=/tmp/minix
MP_BOOT=/tmp/minixboot
: ${ARCH=evbearm-el} : ${ARCH=evbearm-el}
: ${OBJ=../obj.${ARCH}} : ${OBJ=../obj.${ARCH}}
: ${CROSS_TOOLS=${OBJ}/"tooldir.`uname -s`-`uname -r`-`uname -m`"/bin} : ${CROSS_TOOLS=${OBJ}/"tooldir.`uname -s`-`uname -r`-`uname -m`"/bin}
: ${CROSS_PREFIX=${CROSS_TOOLS}/arm-elf32-minix-} : ${CROSS_PREFIX=${CROSS_TOOLS}/arm-elf32-minix-}
: ${JOBS=-j4}
: ${DESTDIR=${OBJ}/destdir.$ARCH} : ${DESTDIR=${OBJ}/destdir.$ARCH}
: ${FSTAB=$DESTDIR/etc/fstab} : ${FSTAB=${DESTDIR}/etc/fstab}
: ${MP_MINIX=/tmp/minix}
: ${MP_BOOT=/tmp/minixboot}
: ${LOOP=/dev/loop0} : ${LOOP=/dev/loop0}
: ${EMPTYIMG=minix_arm_sd_empty.img} : ${EMPTYIMG=minix_arm_sd_empty.img}
: ${IMG=minix_arm_sd.img} : ${IMG=minix_arm_sd.img}
BUILDSH=build.sh BUILDSH=build.sh
if [ ! -f $BUILDSH ] if [ ! -f ${BUILDSH} ]
then echo "Please invoke me from the root source dir, where $BUILDSH is." then echo "Please invoke me from the root source dir, where ${BUILDSH} is."
exit 1 exit 1
fi fi
if [ ! -f ${EMPTYIMG}.bz2 ] if [ ! -f ${EMPTYIMG}.bz2 ]
then echo Retrieving $EMPTYIMG then echo Retrieving ${EMPTYIMG}
wget http://www.minix3.org/arm/${EMPTYIMG}.bz2 wget http://www.minix3.org/arm/${EMPTYIMG}.bz2
fi fi
if [ ! -f $IMG ] if [ ! -f $IMG ]
then echo decompressing $EMPTYIMG onto $IMG then echo decompressing ${EMPTYIMG} onto ${IMG}
bzip2 -d -k ${EMPTYIMG}.bz2 bzip2 -d -k ${EMPTYIMG}.bz2
mv $EMPTYIMG $IMG mv ${EMPTYIMG} ${IMG}
fi fi
# remove fstab and generated pw db # remove fstab and generated pw db
rm -rf $DESTDIR/etc rm -rf ${DESTDIR}/etc
sh build.sh -j4 -m$ARCH -O $OBJ -D $DESTDIR -u distribution sh build.sh ${JOBS} -m ${ARCH} -O ${OBJ} -D ${DESTDIR} -u distribution
cat >$FSTAB <<END_FSTAB cat >${FSTAB} <<END_FSTAB
/dev/c0d0p1s0 / mfs rw 0 1 /dev/c0d0p1s0 / mfs rw 0 1
/dev/c0d0p1s2 /usr mfs rw 0 2 /dev/c0d0p1s2 /usr mfs rw 0 2
/dev/c0d0p1s1 /home mfs rw 0 2 /dev/c0d0p1s1 /home mfs rw 0 2
END_FSTAB END_FSTAB
rm -f $DESTDIR/SETS.* rm -f ${DESTDIR}/SETS.*
${CROSS_TOOLS}/nbpwd_mkdb -V 0 -p -d $DESTDIR $DESTDIR/etc/master.passwd ${CROSS_TOOLS}/nbpwd_mkdb -V 0 -p -d ${DESTDIR} ${DESTDIR}/etc/master.passwd
set -x umount ${MP_MINIX}/home || true
umount ${MP_MINIX}/usr || true
umount ${MP_MINIX} || true
umount ${MP_BOOT} || true
umount $MP_MINIX/home || true losetup -d ${LOOP} || true
umount $MP_MINIX/usr || true
umount $MP_MINIX || true
umount $MP_BOOT || true
losetup -d $LOOP || true echo "Mounting disk image."
losetup $LOOP $IMG losetup ${LOOP} $IMG
${CROSS_TOOLS}/nbmkfs.mfs ${LOOP}p5 ${CROSS_TOOLS}/nbmkfs.mfs ${LOOP}p5
${CROSS_TOOLS}/nbmkfs.mfs ${LOOP}p6 ${CROSS_TOOLS}/nbmkfs.mfs ${LOOP}p6
${CROSS_TOOLS}/nbmkfs.mfs ${LOOP}p7 ${CROSS_TOOLS}/nbmkfs.mfs ${LOOP}p7
mkdir -p $MP_BOOT mkdir -p ${MP_BOOT}
mount ${LOOP}p1 $MP_BOOT mount ${LOOP}p1 ${MP_BOOT}
mkdir -p ${MP_MINIX} mkdir -p ${MP_MINIX}
mount ${LOOP}p5 ${MP_MINIX} mount ${LOOP}p5 ${MP_MINIX}
@ -79,38 +80,39 @@ mkdir -p ${MP_MINIX}/usr
mount ${LOOP}p6 ${MP_MINIX}/home mount ${LOOP}p6 ${MP_MINIX}/home
mount ${LOOP}p7 ${MP_MINIX}/usr mount ${LOOP}p7 ${MP_MINIX}/usr
cp releasetools/uEnv.txt releasetools/cmdline.txt $MP_BOOT echo "Synchronizing filesystem with newly built binaries."
# rsync -a ${DESTDIR}/ ${MP_MINIX}/
echo "Copying configuration and boot modules."
cp releasetools/uEnv.txt releasetools/cmdline.txt ${MP_BOOT}
# also copy to the obj directory to allow tftp booting # also copy to the obj directory to allow tftp booting
# using obj dir as root # using obj dir as root
cp releasetools/uEnv.txt releasetools/cmdline.txt ${OBJ} cp releasetools/uEnv.txt releasetools/cmdline.txt ${OBJ}
${CROSS_PREFIX}objcopy ${OBJ}/kernel/kernel -O binary ${OBJ}/kernel.bin ${CROSS_PREFIX}objcopy ${OBJ}/kernel/kernel -O binary ${OBJ}/kernel.bin
cp ${OBJ}/kernel.bin $MP_BOOT cp ${OBJ}/kernel.bin ${MP_BOOT}
set -x
rsync -a $DESTDIR/ $MP_MINIX/
for f in vm rs pm sched vfs ds mfs pfs init for f in vm rs pm sched vfs ds mfs pfs init
do do
cp ${OBJ}/servers/$f/$f ${OBJ}/$f.elf cp ${OBJ}/servers/${f}/${f} ${OBJ}/${f}.elf
${CROSS_PREFIX}strip -s ${OBJ}/$f.elf ${CROSS_PREFIX}strip -s ${OBJ}/${f}.elf
cp ${OBJ}/$f.elf $MP_BOOT cp ${OBJ}/${f}.elf ${MP_BOOT}
done done
for f in tty memory log for f in tty memory log
do do
cp ${OBJ}/drivers/$f/$f ${OBJ}/$f.elf cp ${OBJ}/drivers/${f}/${f} ${OBJ}/${f}.elf
${CROSS_PREFIX}strip -s ${OBJ}/$f.elf ${CROSS_PREFIX}strip -s ${OBJ}/${f}.elf
cp ${OBJ}/$f.elf $MP_BOOT cp ${OBJ}/${f}.elf ${MP_BOOT}
done done
# Unmount disk image # Unmount disk image
echo "Unmounting disk image"
sync sync
umount $MP_MINIX/home umount ${MP_MINIX}/home
umount $MP_MINIX/usr umount ${MP_MINIX}/usr
umount $MP_MINIX umount ${MP_MINIX}
umount $MP_BOOT umount ${MP_BOOT}
losetup -d $LOOP losetup -d ${LOOP}

View file

@ -1,16 +1,28 @@
DBG=-O0 -g BINDIR?= /usr/tests/minix-posix
CFLAGS+= -Wall -Werror -fno-builtin WARNS?= 1
LDADD+= -lm -lcompat_minix
# Tests have no manpages # Tests have no manpages
MKMAN= no MKMAN= no
# They are all bin-owned; by default normal executable mode # They are all bin-owned; by default normal executable mode
BINOWN=root BINOWN= bin
CFLAGS+= -fno-builtin
LDADD+= -lm -lcompat_minix
.include <bsd.own.mk>
# Some have special flags compiling # Some have special flags compiling
CFLAGS.test51=-mhard-float .if ${MACHINE_ARCH} == "i386"
CFLAGS.test52=-mhard-float # LSC FIXME: Compilation error for now on ARM with that!
COPTS.test51.c= -mhard-float
COPTS.test52.c= -mhard-float
.endif
COPTS.test9.c= -O0
COPTS.test37.c= -O0
COPTS.test53.c= -O0
COPTS.test68.c= -O0
# Some have special libraries # Some have special libraries
LDADD.test59= -lmthread LDADD.test59= -lmthread
@ -19,20 +31,35 @@ LDFLAGS.mod= -shared # make shared object
# Some have an extra file # Some have an extra file
OBJS.test57= test57loop.o OBJS.test57= test57loop.o
.for t in \ # Tests to compile, For every architecture
MINIX_TESTS= \
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 \ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 \
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 \ 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 \
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 \ 41 42 43 44 45 46 48 49 50 52 53 54 55 56 58 59 60 \
61 62 64 65 66 67 68 61 64 65 66 67 68
PROG+= test$(t)
.if ${MACHINE_ARCH} == "i386"
MINIX_TESTS+= \
47 51 57 \
62
.endif # ${MACHINE_ARCH} == "i386"
.if ${MACHINE_ARCH} == "earm"
# LSC Not yet supported on ARM
MKPIC:= no
LDSTATIC:= -static
.endif
.for t in ${MINIX_TESTS}
PROGS+= test${t}
.endfor .endfor
PROG+= t10a t11a t11b t40a t40b t40c t40d t40e t40f t60a t60b \ PROGS+= t10a t11a t11b t40a t40b t40c t40d t40e t40f t60a t60b \
t67a t67b t68a t68b t67a t67b t68a t68b
.include <bsd.own.mk> SCRIPTS+= run testinterp.sh testsh1.sh testsh2.sh
.if $(MKPIC) == "yes" .if ${MKPIC} == "yes"
# Build them as dynamic executables by default if shared libraries # Build them as dynamic executables by default if shared libraries
# are available; so that the building and executing of dynamic # are available; so that the building and executing of dynamic
# executables is tested # executables is tested
@ -40,19 +67,12 @@ LDSTATIC= -dynamic
# Add test that must be linked dynamically, and its dynamically loaded # Add test that must be linked dynamically, and its dynamically loaded
# module # module
PROG+= test63 mod PROGS+= test63 mod
.endif .endif
.include <bsd.prog.mk> # LSC Make sure there is not leftover after a failed testrun
# Some are suid-root
all:
chmod 4755 test11 test33 test43 test44 test46 test56 test60 test61 \
test65
clean: .PHONY .MAKE clean: .PHONY .MAKE
$(MAKE) -C select clean $(MAKE) -C select clean
rm -rf *.o *.s *.bak test? test?? t10a t11a t11b \ rm -rf DIR*
t40a t40b t40c t40d t40e t40f \
t60a t60b t67a t67b t68a t68b \ .include <bsd.prog.mk>
DIR*

View file

@ -11,6 +11,9 @@ skipped=`expr 0` # count number of tests that were skipped
total=`expr 0` # total number of tests tried total=`expr 0` # total number of tests tried
badones= # list of tests that failed badones= # list of tests that failed
# Tests which require setuid
setuids="test11 test33 test43 test44 test46 test56 test60 test61 test65"
tests=" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 \ tests=" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 \
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 \ 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 \
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 \ 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 \
@ -21,6 +24,10 @@ tests_no=`expr 0`
# Directory must be owned by bin # Directory must be owned by bin
[ "$USER" != root ] || chown bin . [ "$USER" != root ] || chown bin .
# If root, make sure the setuid tests have the correct permissions
[ "$USER" = root ] && chown root ${setuids}
[ "$USER" = root ] && chmod 4755 ${setuids}
# Count tests # Count tests
for i in `echo $tests`; do for i in `echo $tests`; do
if [ -x ./test$i ]; then if [ -x ./test$i ]; then

0
test/test48.c Executable file → Normal file
View file

0
test/test49.c Executable file → Normal file
View file