Attached is a patch to fix most of the compilation problems for util-vserver. Steve Langasek tested this on sparc and it worked. Builds still fail on at least hppa, powerpc, and mipsel, since the dietlibc linking fails. See #300926 for some discussion about this.
I didn't try giving the -Os option to the diet command at the linking stage, since I didn't see an easy way to do it from util-vserver's debian/rules. I have so far failed to debug the linking problem to any successful degree. Gerrit, perhaps you could give Ola a helping hand with the linking issue?
diff -ru util-vserver-0.30.204/debian/changelog util-vserver-0.30.204.patched/debian/changelog --- util-vserver-0.30.204/debian/changelog 2005-03-25 12:51:53.008715504 +0200 +++ util-vserver-0.30.204.patched/debian/changelog 2005-03-24 12:34:34.000000000 +0200 @@ -1,3 +1,13 @@ +util-vserver (0.30.204-1.1) unstable; urgency=low + + * debian/rules: Added stuff to put architecture specific macros to CFLAGS + to work around problems in dietlibc's header files. + * src/vshelper-sync.c: Test for __linux__ (which is defined always when + compiling for Linux) instead of __linux (which is not defined when + compiling with gcc --std=c99). + + -- Lars Wirzenius <[EMAIL PROTECTED]> Thu, 24 Mar 2005 12:30:00 +0200 + util-vserver (0.30.204-1) unstable; urgency=low * New upstream release. diff -ru util-vserver-0.30.204/debian/rules util-vserver-0.30.204.patched/debian/rules --- util-vserver-0.30.204/debian/rules 2005-03-25 12:51:53.007715656 +0200 +++ util-vserver-0.30.204.patched/debian/rules 2005-03-24 13:41:18.000000000 +0200 @@ -11,6 +11,7 @@ # from having to guess our platform (since we know it already) DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) # (Most of) the files this concerns belong to /usr/lib/util-vserver. # To keep referencing simple, and because we're not even sure there @@ -18,7 +19,27 @@ # so far. #MAKE_OPTS = pkglibdir=/var/lib/util-vserver PKGLIBDIR=/var/lib/util-vserver -CFLAGS = -Wall -g +CFLAGS = -Wall -g + +ifeq ($(DEB_HOST_ARCH),powerpc) + # dietlibc's sys/types.h tests for "powerpc", not "__powerpc__" + CFLAGS += -Dpowerpc +endif + +ifeq ($(DEB_HOST_ARCH),sparc) + # Targetting at older sparc's causes compilation errors. Steve Langasek + # says this works and it is anyway the oldest sparc generation we + # support in Debian (or kernel/glibc). + CFLAGS += -mv8 +endif + +ifeq ($(DEB_HOST_ARCH),hppa) + # dietlibc fails to define O_NOFOLLOW and O_LARGEFILE. These values + # have been copied from glibc's bits/fcntl.h. + CFLAGS += -DO_NOFOLLOW=00000200 -DO_LARGEFILE=00004000 +endif + + ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) CFLAGS += -O0 diff -ru util-vserver-0.30.204/src/vshelper-sync.c util-vserver-0.30.204.patched/src/vshelper-sync.c --- util-vserver-0.30.204/src/vshelper-sync.c 2004-04-21 12:44:05.000000000 +0300 +++ util-vserver-0.30.204.patched/src/vshelper-sync.c 2005-03-24 12:24:01.000000000 +0200 @@ -85,7 +85,7 @@ FD_ZERO(&fds); FD_SET(fd, &fds); -#ifndef __linux +#ifndef __linux__ # error vshelper relies on the Linux select() behavior (timeout holds remaining time) #endif