Hi again, here is an updated patch for #333147, since the proposed one doesn't apply cleanly anymore. I'd also point that the disabled patch also contains an off-by-one correction, so one might want to keep it somehow. At last, the package doesn't build even with the updated patch, failing there: > cc -pipe -O1 -mtune=i486 -fomit-frame-pointer -I../lib -Wall -Wmissing-prototypes -Wstrict-prototypes -DNCH=1 -D_FILE_OFFSET_BITS=64 -DSBINDIR=\"/sbin\" -DUSRSBINDIR=\"/usr/sbin\" -DLOGDIR=\"/var/log\" -DVARPATH=\"/var\" -DLOCALEDIR=\"/usr/share/locale\" -O1 -s fdformat.c -o fdformat > fdformat.c:17:22: error: linux/fd.h: No such file or directory > fdformat.c: In function 'format_disk': > fdformat.c:28: error: storage size of 'descr' isn't known > fdformat.c:33: error: 'FDFMTBEG' undeclared (first use in this function) > fdformat.c:33: error: (Each undeclared identifier is reported only once > fdformat.c:33: error: for each function it appears in.) > fdformat.c:34: error: invalid use of undefined type 'struct floppy_struct' > fdformat.c:37: error: 'FDFMTTRK' undeclared (first use in this function) > fdformat.c:42: error: invalid use of undefined type 'struct floppy_struct' > fdformat.c:48: error: 'FDFMTEND' undeclared (first use in this function) > fdformat.c:28: warning: unused variable 'descr' > fdformat.c: In function 'verify_disk': > fdformat.c:58: error: invalid use of undefined type 'struct floppy_struct' > fdformat.c:58: error: invalid use of undefined type 'struct floppy_struct' > fdformat.c:63: error: invalid use of undefined type 'struct floppy_struct' > fdformat.c:78: error: 'FD_FILL_BYTE' undeclared (first use in this function) > fdformat.c: In function 'main': > fdformat.c:139: error: 'FDGETPRM' undeclared (first use in this function) > fdformat.c:142: error: invalid use of undefined type 'struct floppy_struct' > fdformat.c:143: error: invalid use of undefined type 'struct floppy_struct' > fdformat.c:143: error: invalid use of undefined type 'struct floppy_struct' > fdformat.c:143: error: invalid use of undefined type 'struct floppy_struct' > make[1]: *** [fdformat] Error 1 > make[1]: Leaving directory `/home/kibi/z/util-linux-2.12r/disk-utils' > make: *** [all] Error 1 So one has to tweak a little more to get this package compile. Oh, debian/rules is now using a mixture of DEB_HOST_GNU_* and DEB_HOST_ARCH_*, which might be polished, I guess, although I didn't want to be too intrusive and probably insert some errors in there, so I tried to keep on only refreshing the existing patch. Cheers, -- Cyril Brulebois PS: Attached are the original patch, the refreshed one, the disabled patch with the off-by-one fix.
diff -ur util-linux-2.12p.old/debian/patches/00list util-linux-2.12p/debian/patches/00list --- util-linux-2.12p.old/debian/patches/00list 2005-10-06 18:45:25.000000000 +0200 +++ util-linux-2.12p/debian/patches/00list 2005-10-06 19:47:00.000000000 +0200 @@ -1,4 +1,3 @@ -10agetty 10cal-widechar 10cfdisk 10debian diff -ur util-linux-2.12p.old/debian/rules util-linux-2.12p/debian/rules --- util-linux-2.12p.old/debian/rules 2005-10-06 18:45:25.000000000 +0200 +++ util-linux-2.12p/debian/rules 2005-10-06 19:52:35.000000000 +0200 @@ -25,7 +25,7 @@ sparc = $(findstring $(arch),sparc) nohwclock = $(findstring $(arch),s390) -SUBDIRS=po lib getopt disk-utils login-utils misc-utils mount sys-utils text-utils +SUBDIRS=po lib getopt disk-utils login-utils misc-utils sys-utils text-utils ifeq ($(arch),$(fdisk_arch)) SUBDIRS += fdisk endif @@ -36,6 +36,7 @@ ifneq ($(arch),$(nohwclock)) SUBDIRS += hwclock endif +SUBDIRS += mount endif ifneq ($(DEB_HOST_GNU_SYSTEM),linux-gnu) @@ -68,9 +69,12 @@ SUIDFILES = debian/tmp-mount/bin/{u,}mount BINFILES = sys-utils/arch text-utils/more -UBINFILES = sys-utils/{ipcs,ipcrm,setsid} \ - misc-utils/{namei,setterm,mcookie,whereis,ddate} \ +UBINFILES = sys-utils/{ipcrm,setsid} \ + misc-utils/{namei,mcookie,whereis,ddate} \ getopt/getopt text-utils/{rev,line,pg} +ifeq ($(DEB_HOST_GNU_SYSTEM),linux-gnu) +UBINFILES += sys-utils/ipcs misc-utils/setterm +endif SBINFILES = disk-utils/mkswap ifeq ($(DEB_HOST_GNU_SYSTEM),linux-gnu) @@ -79,11 +83,15 @@ SBINFILES += hwclock/hwclock endif BINFILES += sys-utils/dmesg -SBINFILES += disk-utils/{blockdev,raw} mount/pivot_root login-utils/agetty +SBINFILES += disk-utils/{blockdev,raw} mount/pivot_root UBINFILES += disk-utils/fdformat USBINFILES = sys-utils/readprofile disk-utils/elvtune # disk-utils/setfdprm endif +ifneq ($(DEB_HOST_GNU_SYSTEM),gnu) +SBINFILES += login-utils/agetty +endif + UBINFILES2= misc-utils/chkdupexe # debian/fdformat # don't strip these ifeq ($(DEB_HOST_GNU_SYSTEM),linux-gnu) @@ -111,11 +119,14 @@ MAN8FILES += hwclock/hwclock.8 endif MAN1FILES += sys-utils/readprofile.1 -MAN8FILES += login-utils/agetty.8 disk-utils/{blockdev.8,elvtune.8} \ +MAN8FILES += disk-utils/{blockdev.8,elvtune.8} \ sys-utils/dmesg.8 mount/pivot_root.8 \ disk-utils/fdformat.8 disk-utils/raw.8 # disk-utils/setfdprm.8 endif +ifneq ($(DEB_HOST_GNU_SYSTEM),gnu) +MAN8FILES += login-utils/agetty.8 +endif EXAMPLES = fdisk/sfdisk.examples getopt/getopt-{test,parse}.{ba,tc}sh ifeq ($(DEB_HOST_GNU_SYSTEM),linux-gnu) @@ -123,8 +134,11 @@ endif INFOFILES = sys-utils/ipc.info -ifeq ($(DEB_HOST_GNU_SYSTEM),linux-gnu) +ifneq ($(DEB_HOST_GNU_SYSTEM),gnu) DOCFILES = login-utils/{README.getty,README.modems-with-agetty,README.poeigl} +endif + +ifeq ($(DEB_HOST_GNU_SYSTEM),linux-gnu) ifneq ($(arch),$(nohwclock)) DOCFILES += debian/README.Debian.hwclock endif @@ -204,11 +218,11 @@ mv -f debian/tmp/sbin/fdisk debian/tmp/sbin/ddisk mv -f debian/tmp/usr/share/man/man8/fdisk.8 debian/tmp/usr/share/man/man8/ddisk.8 endif -ifeq ($(DEB_HOST_GNU_SYSTEM),gnu) +ifneq ($(DEB_HOST_GNU_SYSTEM),linux-gnu) (cd debian/tmp/sbin ; mv mkswap mkswap.linux) (cd debian/tmp/usr/share/man/man8 ; mv mkswap.8 mkswap.linux.8) endif -ifeq ($(DEB_HOST_GNU_SYSTEM),linux-gnu) +ifneq ($(DEB_HOST_GNU_SYSTEM),gnu) (cd debian/tmp/sbin ; mv agetty getty) (cd debian/tmp/usr/share/man/man8 ; mv agetty.8 getty.8) ifneq ($(arch), $(nohwclock))
diff -ur util-linux-2.12r~/debian/patches/00list util-linux-2.12r/debian/patches/00list --- util-linux-2.12r~/debian/patches/00list 2007-03-30 05:55:55.000000000 +0200 +++ util-linux-2.12r/debian/patches/00list 2007-03-30 05:35:13.000000000 +0200 @@ -1,4 +1,4 @@ -10agetty +#10agetty 10amd64-rdev 10cal-widechar 10cfdisk diff -ur util-linux-2.12r~/debian/rules util-linux-2.12r/debian/rules --- util-linux-2.12r~/debian/rules 2007-03-30 05:55:55.000000000 +0200 +++ util-linux-2.12r/debian/rules 2007-03-30 05:54:55.000000000 +0200 @@ -31,7 +31,7 @@ sparc = $(findstring $(arch),sparc sparc64) nohwclock = $(findstring $(arch),s390) -SUBDIRS=po lib getopt disk-utils login-utils misc-utils mount sys-utils text-utils +SUBDIRS=po lib getopt disk-utils login-utils misc-utils sys-utils text-utils ifeq ($(arch),$(fdisk_arch)) SUBDIRS += fdisk endif @@ -42,6 +42,7 @@ ifneq ($(arch),$(nohwclock)) SUBDIRS += hwclock endif +SUBDIRS += mount endif ifneq ($(DEB_HOST_ARCH_OS),linux) @@ -73,9 +74,12 @@ SUIDFILES = debian/tmp-mount/bin/{u,}mount BINFILES = sys-utils/arch text-utils/more -UBINFILES = sys-utils/{ipcs,ipcrm,setsid} \ - misc-utils/{namei,setterm,mcookie,whereis,ddate} \ +UBINFILES = sys-utils/{ipcrm,setsid} \ + misc-utils/{namei,mcookie,whereis,ddate} \ getopt/getopt text-utils/{rev,line,pg} +ifeq ($(DEB_HOST_GNU_SYSTEM),linux-gnu) +UBINFILES += sys-utils/ipcs misc-utils/setterm +endif SBINFILES = disk-utils/mkswap ifeq ($(DEB_HOST_ARCH_OS),linux) @@ -84,11 +88,15 @@ SBINFILES += hwclock/hwclock endif BINFILES += sys-utils/dmesg -SBINFILES += disk-utils/{blockdev,raw,isosize} mount/pivot_root login-utils/agetty +SBINFILES += disk-utils/{blockdev,raw,isosize} mount/pivot_root UBINFILES += disk-utils/fdformat USBINFILES = sys-utils/readprofile disk-utils/elvtune # disk-utils/setfdprm endif +ifneq ($(DEB_HOST_GNU_SYSTEM),gnu) +SBINFILES += login-utils/agetty +endif + UBINFILES2= misc-utils/chkdupexe # debian/fdformat # don't strip these ifeq ($(DEB_HOST_ARCH_OS),linux) @@ -116,11 +124,14 @@ MAN8FILES += hwclock/hwclock.8 endif MAN1FILES += sys-utils/readprofile.1 -MAN8FILES += login-utils/agetty.8 disk-utils/{blockdev.8,elvtune.8,isosize.8} \ +MAN8FILES += disk-utils/{blockdev.8,elvtune.8,isosize.8} \ sys-utils/dmesg.8 mount/pivot_root.8 \ disk-utils/fdformat.8 disk-utils/raw.8 # disk-utils/setfdprm.8 endif +ifneq ($(DEB_HOST_GNU_SYSTEM),gnu) +MAN8FILES += login-utils/agetty.8 +endif EXAMPLES = fdisk/sfdisk.examples getopt/getopt-{test,parse}.{ba,tc}sh ifeq ($(DEB_HOST_ARCH_OS),linux) @@ -128,8 +139,11 @@ endif INFOFILES = sys-utils/ipc.info -ifeq ($(DEB_HOST_ARCH_OS),linux) +ifneq ($(DEB_HOST_ARCH_OS),gnu) DOCFILES = login-utils/{README.getty,README.modems-with-agetty,README.poeigl} +endif + +ifeq ($(DEB_HOST_GNU_SYSTEM),linux-gnu) ifneq ($(arch),$(nohwclock)) DOCFILES += debian/README.Debian.hwclock endif @@ -206,11 +220,11 @@ mv -f debian/tmp/sbin/fdisk debian/tmp/sbin/ddisk mv -f debian/tmp/usr/share/man/man8/fdisk.8 debian/tmp/usr/share/man/man8/ddisk.8 endif -ifeq ($(DEB_HOST_GNU_SYSTEM),gnu) +ifneq ($(DEB_HOST_GNU_SYSTEM),linux-gnu) (cd debian/tmp/sbin ; mv mkswap mkswap.linux) (cd debian/tmp/usr/share/man/man8 ; mv mkswap.8 mkswap.linux.8) endif -ifeq ($(DEB_HOST_ARCH_OS),linux) +ifneq ($(DEB_HOST_ARCH_OS),gnu) (cd debian/tmp/sbin ; mv agetty getty) (cd debian/tmp/usr/share/man/man8 ; mv agetty.8 getty.8) ifneq ($(arch), $(nohwclock))
#! /bin/sh /usr/share/dpatch/dpatch-run ## 10agetty.dpatch by LaMont Jones <lamont@debian.org> ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: agetty changes in Debian. The biggest part is switching from ## DP: termio to termios. The only other thing is a block of turned-off ## DP: code trying to interoperate better with gdm. @DPATCH@ diff -urNad 2.12r-16~/login-utils/agetty.c 2.12r-16/login-utils/agetty.c --- 2.12r-16~/login-utils/agetty.c 2006-12-19 09:02:16.000000000 -0700 +++ 2.12r-16/login-utils/agetty.c 2007-01-09 11:21:56.000000000 -0700 @@ -30,6 +30,8 @@ #include <getopt.h> #include <time.h> #include <sys/file.h> +#include <sys/vt.h> +#include <linux/tty.h> #include "xstrncpy.h" #include "nls.h" @@ -402,7 +404,7 @@ while (isascii(c = getopt(argc, argv, "I:LH:f:hil:mt:wn"))) { switch (c) { case 'I': - if (!(op->initstring = malloc(strlen(optarg)))) { + if (!(op->initstring = malloc(strlen(optarg)+1))) { error(_("can't malloc initstring")); break; } @@ -652,6 +654,91 @@ if ((st.st_mode & S_IFMT) != S_IFCHR) error(_("/dev/%s: not a character device"), tty); + /* + * Try to avoid opening a vt that is already open, as this will + * mean that the keyboard will be unusable. + * + * Unfortunately, all the kernel gives us to find out is an ioctl + * for the next available vt. As the kernel doesn't open the vt for + * you with the ioctl, there is still a chance of both processes + * opening the same vt, but this check is far better than nothing at + * all. + * + * The kernel API sucks, and is unusable for this situation. What + * we really need is an ioctl that says 'does anyone _ELSE_ have + * this tty open', and that doesn't exist. Or better yet, the + * kernel really shouldn't allow two processes to have read access + * on the same tty at the same time (other than with dup...) Opens + * of the same tty device shouldn't be able to steal reads from + * each other. + * + * Similar to the check added to gdm. + * + * For now, just turn off this check, restoring the bug that ?dm + * (and the system) occasionally get their keyboard locked out by + * getty showing up after they've taken a vt that inittab says + * goes to a getty. + * Bummer. + * + */ +#if 0 + if (strncmp(tty,"tty",3) == 0) + { + char *end; + int vtno; + + vtno = strtol(tty+3,&end,10); + if (end != tty+3 && *end == '\0' && vtno > 1) + { + int fd; + int newvtno; + int fds[MAX_NR_CONSOLES]; + int vt_cnt = 0; + int i; + + for ( i = 0 ; i < MAX_NR_CONSOLES ; i++ ) + fds[i] = -1; + + if ((fd = open("/dev/tty0", O_WRONLY, 0) ) < 0 + && errno != ENOENT) + error(_("/dev/tty0: cannot open: %m")); + + if (fd >= 0) do + { + if ((ioctl(fd, VT_OPENQRY, &newvtno ) < 0)) + error(_("failed to query next available vt")); + + if (newvtno == -1) + error(_("all vts are in use")); + + if (newvtno > vtno) + error(_("/dev/%s: already in use"), tty); + + if (newvtno < vtno) + { + char vtname[TTY_NAME_MAX+3]; + + sprintf( vtname, "tty%d", newvtno ); + + if ((fds[vt_cnt++] = + open(vtname, O_RDWR|O_NONBLOCK, 0)) < 0) + { + error(_("/dev/%s: cannot open: %m"), tty); + } + } + } while (newvtno != vtno); + + close(fd); + for ( i = 0 ; i < MAX_NR_CONSOLES ; i++ ) + { + if (fds[i] == -1) + break; + close(fds[i]); + } + } + } +#endif + /* Open the tty as standard input. */ (void) close(0);
Attachment:
pgpMXAeP8tt5H.pgp
Description: PGP signature