compiling qemu fails

1,646 views
Skip to first unread message

Andrew Elwell

unread,
Mar 16, 2012, 5:57:58 PM3/16/12
to bifferboard
Hi folks

I've just tried to build the toolchain from git (last update was 3 mar)

commit eee1d4038cba2ef0ec4fa73fd0ad3b5233f541d3
Author: bifferos <biff...@yahoo.co.uk>
Date: Sat Mar 3 00:42:25 2012 +0000

Added initramfs-base-files.txt


but it's failing at the qemu stage

[aelwell@pcitgtelwell bifferboard (master)]$ make
make -C openwrt
make[1]: Entering directory `/home/aelwell/GIT_Sources/bifferboard/openwrt'
make[2]: Entering directory `/home/aelwell/GIT_Sources/bifferboard/openwrt'
make[3]: Entering directory `/home/aelwell/GIT_Sources/bifferboard/openwrt'
make[3]: Leaving directory `/home/aelwell/GIT_Sources/bifferboard/openwrt'
make[2]: Leaving directory `/home/aelwell/GIT_Sources/bifferboard/openwrt'
make[2] world
make[3] target/compile
make[4] -C target/linux compile
make[3] package/cleanup
make[3] package/compile
make[4] -C package/opkg host-compile
make[4] -C package/base-files compile
make[4] -C package/busybox compile
make[4] -C package/button-hotplug compile
make[4] -C package/dropbear compile
make[4] -C package/hotplug2 compile
make[4] -C package/kernel compile
make[4] -C package/mtd compile
make[4] -C package/opkg compile
make[4] -C package/lua compile
make[4] -C package/uci compile
make[3] package/install
make[4] -C package/busybox install
make[4] -C package/button-hotplug install
make[4] -C package/dropbear install
make[4] -C package/hotplug2 install
make[4] -C package/kernel install
make[4] -C package/mtd install
make[4] -C package/opkg install
make[4] -C package/uci install
make[4] -C package/base-files install
make[3] package/rootfs-prepare
make[4] package/preconfig
make[3] target/install
make[4] -C target/linux install
make[3] package/index
make[1]: Leaving directory `/home/aelwell/GIT_Sources/bifferboard/openwrt'
cd qemu && ./configure
Install prefix /usr/local
BIOS directory /usr/local/share/qemu
binary directory /usr/local/bin
library directory /usr/local/lib
config directory /usr/local/etc
Manual directory /usr/local/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path /home/aelwell/GIT_Sources/bifferboard/qemu
C compiler gcc
Host C compiler gcc
CFLAGS -O2 -g
QEMU_CFLAGS -m64 -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE
-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes
-Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes
-fno-strict-aliasing -fstack-protector-all -Wendif-labels
-Wmissing-include-dirs -Wempty-body -Wnested-externs -Wformat-security
-Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration
-Wold-style-definition -Wtype-limits -I$(SRC_PATH)/libcacard
-I/usr/include/nss3 -I/usr/include/nspr4
LDFLAGS -Wl,--warn-common -m64 -g
make make
install install
python python
host CPU x86_64
host big endian no
target list i386-softmmu
tcg debug enabled no
Mon debug enabled no
gprof enabled no
sparse enabled no
strip binaries yes
profiler no
static build no
-Werror enabled no
SDL support no
curses support yes
curl support yes
check support no
mingw32 support no
Audio drivers oss
Extra audio cards ac97 es1370 sb16 hda
Block whitelist
Mixer emulation no
VNC support yes
VNC TLS support yes
VNC SASL support yes
VNC JPEG support yes
VNC PNG support yes
VNC thread no
xen support no
brlapi support no
bluez support no
Documentation yes
NPTL support yes
GUEST_BASE yes
PIE user targets no
vde support no
IO thread no
Linux AIO support no
ATTR/XATTR support no
Install blobs yes
KVM support yes
fdt support no
preadv support yes
fdatasync yes
madvise yes
posix_madvise yes
uuid support no
vhost-net support yes
Trace backend nop
Trace output file trace-<pid>
spice support no
rbd support no
xfsctl support no
nss used yes
usb net redir no
OpenGL support yes
build guest agent yes
make -C qemu
make[1]: Entering directory `/home/aelwell/GIT_Sources/bifferboard/qemu'
GEN config-host.h
GEN trace.h
GEN trace.c
make[2]: *** No rule to make target `ccid-card-emulated.o', needed by
`all'. Stop.
make[1]: *** [subdir-libhw64] Error 2
make[1]: Leaving directory `/home/aelwell/GIT_Sources/bifferboard/qemu'
make: *** [all] Error 2
[aelwell@pcitgtelwell bifferboard (master)]$


Any pointers?

biff...@yahoo.co.uk

unread,
Mar 17, 2012, 7:10:23 AM3/17/12
to Bifferboard

So what happens with a fresh checkout when you cd into the qemu
directory and just type
./configure
make

That should work and only build qemu, probably we should try that
first. The next thing to try is the vanilla qemu to check your system
compatibility, does that compile on your system?

regards,
Biff.

Andrew Elwell

unread,
Mar 17, 2012, 3:23:09 PM3/17/12
to biffe...@googlegroups.com
> So what happens with a fresh checkout when you cd into the qemu
> directory and just type
> ./configure
> make


fails at same place


[aelwell@pcitgtelwell bifferboard (master)]$ cd ..
[aelwell@pcitgtelwell GIT_Sources]$ rm -rf bifferboard/
[aelwell@pcitgtelwell GIT_Sources]$ git clone https://github.com/bifferos/bb.git
Cloning into 'bb'...
remote: Counting objects: 10180, done.
remote: Compressing objects: 100% (8058/8058), done.
remote: Total 10180 (delta 1342), reused 9899 (delta 1061)
Receiving objects: 100% (10180/10180), 12.00 MiB | 842 KiB/s, done.
Resolving deltas: 100% (1342/1342), done.
[aelwell@pcitgtelwell GIT_Sources]$ mv bb/ bifferboard
[aelwell@pcitgtelwell GIT_Sources]$ cd bifferboard/
[aelwell@pcitgtelwell bifferboard (master)]$ ls
consolidate_feeds.py Makefile openwrt qemu README seabios tools
[aelwell@pcitgtelwell bifferboard (master)]$ cd qemu/
[aelwell@pcitgtelwell qemu (master)]$ ./configure && make

GEN i386-softmmu/config-devices.mak
GEN config-all-devices.mak
GEN qemu-options.texi
GEN qemu-monitor.texi
GEN qemu-img-cmds.texi
GEN qemu-doc.html
GEN qemu-tech.html
GEN qemu.1
GEN qemu-img.1
GEN qemu-nbd.8
GEN QMP/qmp-commands.txt
GEN config-host.h
GEN trace.h
GEN qemu-options.def
GEN qapi-generated/qga-qapi-types.h
GEN qapi-generated/qga-qapi-visit.h
GEN qapi-generated/qga-qmp-marshal.c
CC qapi/qapi-visit-core.o
CC qapi/qmp-input-visitor.o
CC qapi/qmp-output-visitor.o
CC qapi/qapi-dealloc-visitor.o
CC qapi/qmp-registry.o
CC qapi/qmp-dispatch.o
CC qemu-ga.o
CC qga/guest-agent-command-state.o
CC qga/guest-agent-commands.o
CC qemu-tool.o
CC qemu-error.o
CC error.o
CC osdep.o
CC oslib-posix.o
CC qemu-thread-posix.o
GEN trace.c
CC trace.o
CC cutils.o
CC cache-utils.o
CC qemu-malloc.o
CC qemu-option.o
CC module.o
CC async.o
CC nbd.o
CC block.o
CC aio.o
CC aes.o
CC qemu-config.o
CC qemu-progress.o
CC qemu-sockets.o
CC posix-aio-compat.o
CC block/raw.o
CC block/cow.o
CC block/qcow.o
CC block/vdi.o
CC block/vmdk.o
CC block/cloop.o
CC block/dmg.o
CC block/bochs.o
CC block/vpc.o
CC block/vvfat.o
CC block/qcow2.o
CC block/qcow2-refcount.o
CC block/qcow2-cluster.o
CC block/qcow2-snapshot.o
CC block/qcow2-cache.o
CC block/qed.o
CC block/qed-gencb.o
CC block/qed-l2-cache.o
CC block/qed-table.o
CC block/qed-cluster.o
CC block/qed-check.o
CC block/parallels.o
CC block/nbd.o
CC block/blkdebug.o
CC block/sheepdog.o
CC block/blkverify.o
CC block/raw-posix.o
CC block/curl.o
CC qint.o
CC qstring.o
CC qdict.o
CC qlist.o
CC qfloat.o
CC qbool.o
CC qjson.o
CC json-lexer.o
CC json-streamer.o
CC json-parser.o
CC qerror.o
CC qemu-timer-common.o
CC qapi-generated/qga-qapi-visit.o
CC qapi-generated/qga-qapi-types.o
CC qapi-generated/qga-qmp-marshal.o
LINK qemu-ga
CC qemu-nbd.o
LINK qemu-nbd
GEN qemu-img-cmds.h
CC qemu-img.o
LINK qemu-img
CC qemu-io.o
CC cmd.o
LINK qemu-io
CC libhw64/vl.o
CC libhw64/loader.o
CC libhw64/virtio-console.o
CC libhw64/virtio-pci.o
CC libhw64/fw_cfg.o
CC libhw64/pci.o
CC libhw64/pci_bridge.o
CC libhw64/msix.o
CC libhw64/msi.o
CC libhw64/pci_host.o
CC libhw64/pcie_host.o
CC libhw64/ioh3420.o
CC libhw64/xio3130_upstream.o
CC libhw64/xio3130_downstream.o
CC libhw64/watchdog.o
CC libhw64/serial.o
CC libhw64/parallel.o
CC libhw64/i8254.o
CC libhw64/pcspk.o
CC libhw64/pckbd.o
CC libhw64/usb-uhci.o
CC libhw64/usb-ohci.o
CC libhw64/usb-ehci.o
CC libhw64/fdc.o
CC libhw64/acpi.o
CC libhw64/acpi_piix4.o
CC libhw64/pm_smbus.o
CC libhw64/apm.o
CC libhw64/dma.o
CC libhw64/hpet.o
CC libhw64/applesmc.o
CC libhw64/usb-ccid.o
CC libhw64/ccid-card-passthru.o
make[1]: *** No rule to make target `ccid-card-emulated.o', needed by
`all'. Stop.
make: *** [subdir-libhw64] Error 2

FYI this is a Fedora 16 box:

[aelwell@pcitgtelwell qemu (master)]$ rpm -q make gcc
make-3.82-8.fc16.x86_64
gcc-4.6.2-1.fc16.x86_64


Andrew

biff...@yahoo.co.uk

unread,
Mar 17, 2012, 6:09:54 PM3/17/12
to Bifferboard

OK. And what about when you compile this:
http://wiki.qemu.org/download/qemu-0.15.1.tar.gz

./configure --target-list=i386-softmmu
make

On Mar 17, 7:23 pm, Andrew Elwell <andrew.elw...@gmail.com> wrote:
> > So what happens with a fresh checkout when you cd into the qemu
> > directory and just type
> > ./configure
> > make
>
> fails at same place
>
> [aelwell@pcitgtelwell bifferboard (master)]$ cd ..
> [aelwell@pcitgtelwell GIT_Sources]$ rm -rf bifferboard/
> [aelwell@pcitgtelwell GIT_Sources]$ git clonehttps://github.com/bifferos/bb.git

Andrew Elwell

unread,
Mar 17, 2012, 6:30:48 PM3/17/12
to biffe...@googlegroups.com
Well, that works just fine

[aelwell@pcitgtelwell qemu-0.15.1]$ ./configure --target-list=i386-softmmu


Install prefix /usr/local
BIOS directory /usr/local/share/qemu
binary directory /usr/local/bin
library directory /usr/local/lib
config directory /usr/local/etc
Manual directory /usr/local/share/man
ELF interp prefix /usr/gnemul/qemu-%M

Source path /home/aelwell/compile/qemu-0.15.1


C compiler gcc
Host C compiler gcc
CFLAGS -O2 -g
QEMU_CFLAGS -m64 -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE
-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes
-Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes
-fno-strict-aliasing -fstack-protector-all -Wendif-labels
-Wmissing-include-dirs -Wempty-body -Wnested-externs -Wformat-security
-Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration

-Wold-style-definition -Wtype-limits -I/usr/include/libpng12


-I$(SRC_PATH)/libcacard -I/usr/include/nss3 -I/usr/include/nspr4
LDFLAGS -Wl,--warn-common -m64 -g
make make
install install
python python

smbd /usr/sbin/smbd

[aelwell@pcitgtelwell qemu-0.15.1]$ make

CC libhw64/ccid-card-emulated.o
CC libhw64/wdt_i6300esb.o
CC libhw64/pcie.o
CC libhw64/pcie_aer.o
CC libhw64/pcie_port.o
CC libhw64/ne2000.o
CC libhw64/eepro100.o
CC libhw64/pcnet-pci.o
CC libhw64/pcnet.o
CC libhw64/e1000.o
CC libhw64/rtl8139.o
CC libhw64/ne2000-isa.o
CC libhw64/ide/core.o
CC libhw64/ide/atapi.o
CC libhw64/ide/qdev.o
CC libhw64/ide/pci.o
CC libhw64/ide/isa.o
CC libhw64/ide/piix.o
CC libhw64/ide/ahci.o
CC libhw64/ide/ich.o
CC libhw64/lsi53c895a.o
CC libhw64/dma-helpers.o
CC libhw64/sysbus.o
CC libhw64/isa-bus.o
CC libhw64/qdev-addr.o
CC libhw64/vga-pci.o
CC libhw64/vga-isa.o
CC libhw64/vmware_vga.o
CC libhw64/vmmouse.o
CC libhw64/sb16.o
CC libhw64/es1370.o
CC libhw64/ac97.o
CC libhw64/intel-hda.o
CC libhw64/hda-audio.o
CC libcacard/cac.o
CC libcacard/event.o
CC libcacard/vcard.o
CC libcacard/vreader.o
CC libcacard/vcard_emul_nss.o
CC libcacard/vcard_emul_type.o
CC libcacard/card_7816.o
CC libcacard/vscclient.o
LINK vscclient
CC blockdev.o
CC net.o
CC net/queue.o
CC net/checksum.o
CC net/util.o
CC net/socket.o
CC net/dump.o
CC net/tap.o
CC net/tap-linux.o
CC net/slirp.o
CC readline.o
CC console.o
CC cursor.o
CC os-posix.o
CC tcg-runtime.o
CC host-utils.o
CC irq.o
CC ioport.o
CC input.o
CC i2c.o
CC smbus.o
CC smbus_eeprom.o
CC eeprom93xx.o
CC scsi-disk.o
CC cdrom.o
CC scsi-generic.o
CC scsi-bus.o
CC usb.o
CC usb-hub.o
CC usb-linux.o
CC usb-hid.o
CC usb-msd.o
CC usb-wacom.o
CC usb-serial.o
CC usb-net.o
CC usb-bus.o
CC usb-desc.o
CC bt.o
CC bt-host.o
CC bt-vhci.o
CC bt-l2cap.o
CC bt-sdp.o
CC bt-hci.o
CC bt-hid.o
CC usb-bt.o
CC bt-hci-csr.o
CC buffered_file.o
CC migration.o
CC migration-tcp.o
CC qemu-char.o
CC savevm.o
CC msmouse.o
CC ps2.o
CC qdev.o
CC qdev-properties.o
CC block-migration.o
CC iohandler.o
CC pflib.o
CC bitmap.o
CC bitops.o
CC migration-exec.o
CC migration-unix.o
CC migration-fd.o
CC audio/audio.o
CC audio/noaudio.o
CC audio/wavaudio.o
CC audio/mixeng.o
CC audio/ossaudio.o
CC audio/wavcapture.o
CC ui/keymaps.o
CC ui/curses.o
CC ui/vnc.o
CC ui/d3des.o
CC ui/vnc-enc-zlib.o
CC ui/vnc-enc-hextile.o
CC ui/vnc-enc-tight.o
CC ui/vnc-palette.o
CC ui/vnc-enc-zrle.o
CC ui/vnc-tls.o
ui/vnc-tls.c: In function ‘vnc_tls_client_setup’:
ui/vnc-tls.c:313:9: warning: ‘gnutls_kx_set_priority’ is deprecated
(declared at /usr/include/gnutls/compat.h:342)
[-Wdeprecated-declarations]
ui/vnc-tls.c:320:9: warning: ‘gnutls_certificate_type_set_priority’ is
deprecated (declared at /usr/include/gnutls/compat.h:347)
[-Wdeprecated-declarations]
ui/vnc-tls.c:327:9: warning: ‘gnutls_protocol_set_priority’ is
deprecated (declared at /usr/include/gnutls/compat.h:344)
[-Wdeprecated-declarations]
CC ui/vnc-auth-vencrypt.o
CC ui/vnc-auth-sasl.o
CC ui/vnc-jobs-sync.o
CC iov.o
CC acl.o
CC compatfd.o
CC notify.o
CC event_notifier.o
CC qemu-timer.o
CC slirp/cksum.o
CC slirp/if.o
CC slirp/ip_icmp.o
CC slirp/ip_input.o
CC slirp/ip_output.o
CC slirp/slirp.o
CC slirp/mbuf.o
CC slirp/misc.o
CC slirp/sbuf.o
CC slirp/socket.o
CC slirp/tcp_input.o
CC slirp/tcp_output.o
CC slirp/tcp_subr.o
CC slirp/tcp_timer.o
CC slirp/udp.o
CC slirp/bootp.o
CC slirp/tftp.o
CC libdis/i386-dis.o
GEN config-target.h
CC i386-softmmu/arch_init.o
CC i386-softmmu/cpus.o
GEN i386-softmmu/hmp-commands.h
GEN i386-softmmu/qmp-commands.h
CC i386-softmmu/monitor.o
CC i386-softmmu/machine.o
CC i386-softmmu/gdbstub.o
CC i386-softmmu/balloon.o
CC i386-softmmu/virtio.o
CC i386-softmmu/virtio-blk.o
CC i386-softmmu/virtio-balloon.o
CC i386-softmmu/virtio-net.o
CC i386-softmmu/virtio-serial-bus.o
CC i386-softmmu/vhost_net.o
CC i386-softmmu/vhost.o
CC i386-softmmu/rwhandler.o
CC i386-softmmu/kvm.o
CC i386-softmmu/kvm-all.o
CC i386-softmmu/xen-stub.o
CC i386-softmmu/ivshmem.o
CC i386-softmmu/exec.o
CC i386-softmmu/translate-all.o
CC i386-softmmu/cpu-exec.o
CC i386-softmmu/translate.o
CC i386-softmmu/tcg/tcg.o
CC i386-softmmu/fpu/softfloat.o
CC i386-softmmu/op_helper.o
CC i386-softmmu/helper.o
CC i386-softmmu/cpuid.o
CC i386-softmmu/disas.o
CC i386-softmmu/vga.o
CC i386-softmmu/mc146818rtc.o
CC i386-softmmu/i8259.o
CC i386-softmmu/pc.o
CC i386-softmmu/cirrus_vga.o
CC i386-softmmu/sga.o
CC i386-softmmu/apic.o
CC i386-softmmu/ioapic.o
CC i386-softmmu/piix_pci.o
CC i386-softmmu/vmport.o
CC i386-softmmu/device-hotplug.o
CC i386-softmmu/pci-hotplug.o
CC i386-softmmu/smbios.o
CC i386-softmmu/wdt_ib700.o
CC i386-softmmu/debugcon.o
CC i386-softmmu/multiboot.o
CC i386-softmmu/pc_piix.o
CC i386-softmmu/kvmclock.o
LINK i386-softmmu/qemu
AS optionrom/multiboot.o
Building optionrom/multiboot.img
Building optionrom/multiboot.raw
Signing optionrom/multiboot.bin
AS optionrom/linuxboot.o
Building optionrom/linuxboot.img
Building optionrom/linuxboot.raw
Signing optionrom/linuxboot.bin
rm multiboot.o linuxboot.raw linuxboot.img multiboot.raw multiboot.img
linuxboot.o
[aelwell@pcitgtelwell qemu-0.15.1]$


Grr.
I've done a diff between the 2 branches (can forward if you like - 723
lines) but can't see anything obvious

Andrew Elwell

unread,
Mar 17, 2012, 6:42:43 PM3/17/12
to biffe...@googlegroups.com
OK - quick follow up.

git checkout master ; (back to your bb.git tree)

./configure --target-list=i386-softmmu
make

worked fine. Then tried to do a simple '../configre && make -- ended
up with a new error


CC lm32-softmmu/framebuffer.o
LINK lm32-softmmu/qemu-system-lm32
/usr/bin/ld: milkymist.o: undefined reference to symbol 'XFree'
/usr/bin/ld: note: 'XFree' is defined in DSO /usr/lib64/libX11.so.6 so
try adding it to the linker command line
/usr/lib64/libX11.so.6: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
make[1]: *** [qemu-system-lm32] Error 1
make: *** [subdir-lm32-softmmu] Error 2


Ho Hum

biff...@yahoo.co.uk

unread,
Mar 17, 2012, 8:07:14 PM3/17/12
to Bifferboard

bb tree already hard-codes target list to i386-softmmu, so that should
have no effect there. You could try Ubuntu 32-bit, which I've used to
compile this in the past, if you don't want to use Slackware 64-bit,
like I'm using. I've really no idea why you're getting those errors,
and nobody else has reported anything of the sort, unfortunately.

regards,
Biff.

Andrew Scheller

unread,
Mar 18, 2012, 7:57:37 AM3/18/12
to biffe...@googlegroups.com
Hi everyone,

>  CC    libhw64/ccid-card-passthru.o
> make[1]: *** No rule to make target `ccid-card-emulated.o', needed by
> `all'.  Stop.
> make: *** [subdir-libhw64] Error 2

By back-tracking through Makefiles, dependency files and configure
scripts (phew!) I managed to track down the cause of the problem, and
found that this compile error is also reproducible on Ubuntu if you
install the libnss3-dev package (which enables CONFIG_SMARTCARD_NSS,
but Biff's deleted the files needed to compile support for this).
To fix it, you just need to apply this patch:
--- a/qemu/configure
+++ b/qemu/configure
@@ -176,7 +176,7 @@ trace_file="trace"
spice=""
rbd=""
smartcard=""
-smartcard_nss=""
+smartcard_nss="no"
usb_redir=""
opengl=""
guest_agent="yes"


Lurch

Andrew Scheller

unread,
Mar 18, 2012, 8:05:04 AM3/18/12
to biffe...@googlegroups.com
> [aelwell@pcitgtelwell qemu-0.15.1]$
>
> Grr.
> I've done a diff between the 2 branches (can forward if you like - 723
> lines) but can't see anything obvious

AFAICT qemu-0.15.0 (rather than qemu-0.15.1) is the version that the
copy in bb.git is based off.

Lurch

biff...@yahoo.co.uk

unread,
Mar 18, 2012, 3:31:21 PM3/18/12
to Bifferboard
Nice work. I'd fix it now, unfortunately github got hacked (the silly
fools.. :)), so I have to re-gen my certs to get write access again.
I'll update it when I next have access.

Joshua Phillips

unread,
Mar 18, 2012, 3:55:09 PM3/18/12
to biffe...@googlegroups.com
On Sun 18/Mar/2012, biff...@yahoo.co.uk wrote:
> Nice work. I'd fix it now, unfortunately github got hacked (the silly
> fools.. :)), so I have to re-gen my certs to get write access again.
> I'll update it when I next have access.

You don't need to re-generate your SSH key pair (by the nature of
public-key crypto, github doesn't have your private key). All you have
to do is log into github and confirm that the public key is indeed
yours.

biff...@yahoo.co.uk

unread,
Mar 18, 2012, 7:32:46 PM3/18/12
to Bifferboard
On Mar 18, 7:55 pm, Joshua Phillips <jphill...@imap.cc> wrote:
Thanks, I stand corrected, anyhow, I knew I had to *do* something and
didn't look at the email closely enough to understand that thing was
trivial, and consequently put it off!

'tis now done.

cheers,
Biff.
Reply all
Reply to author
Forward
0 new messages