[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

util-linux on freebsd-i386



I now have a patch for util-linux on freebsd-i386. It is definitely not finished and ready to merge. There are some things that need work still, but I'd like to find out what it needs for netbsd before continuing.

This is against 2.11u-2. Most of it is straightforward, except the changes to debian/rules, which are a bit drastic.

	---Nathan
diff -urN util-linux-2.11u/MCONFIG util-linux-2.11u-freebsd/MCONFIG
--- util-linux-2.11u/MCONFIG	2002-11-07 01:06:47.000000000 -0500
+++ util-linux-2.11u-freebsd/MCONFIG	2002-11-01 13:38:25.000000000 -0500
@@ -11,6 +11,7 @@
 # Select for CPU i386 if the binaries must be able to run on an intel 386
 # (by default i486 code is generated, see below)
 CPU=$(shell uname -m)
+OS=$(shell uname -s | tr '[:upper:]' '[:lower:]')
 ARCH=$(shell echo $(CPU) | sed 's/i.86/intel/;s/arm.*/arm/')
 
 # If HAVE_PAM is set to "yes", then login, chfn, chsh, and newgrp
diff -urN util-linux-2.11u/Makefile util-linux-2.11u-freebsd/Makefile
--- util-linux-2.11u/Makefile	2001-07-01 14:59:39.000000000 -0400
+++ util-linux-2.11u-freebsd/Makefile	2002-11-02 00:18:17.000000000 -0500
@@ -8,6 +8,15 @@
 include ./make_include
 include ./MCONFIG
 
+ifeq "$(OS)" "freebsd"
+SUBDIRS=po \
+	lib \
+	getopt-1.1.2 \
+	login-utils \
+	misc-utils \
+	sys-utils \
+	text-utils
+else
 SUBDIRS=po \
 	lib \
 	getopt-1.1.2 \
@@ -19,6 +28,7 @@
 	hwclock \
 	sys-utils \
 	text-utils
+endif
 
 .PHONEY: all install clean now
 all:	defines.h
diff -urN util-linux-2.11u/debian/mk/geninstall.pl util-linux-2.11u-freebsd/debian/mk/geninstall.pl
--- util-linux-2.11u/debian/mk/geninstall.pl	1969-12-31 19:00:00.000000000 -0500
+++ util-linux-2.11u-freebsd/debian/mk/geninstall.pl	2002-11-07 00:49:48.000000000 -0500
@@ -0,0 +1,68 @@
+#!/usr/bin/perl
+
+%varchtable=(
+	'bsd'		=>	'(free|net)bsd-.+',
+	'freebsd'	=>	'freebsd-.+',
+	'hurd'		=>	'hurd-.+',
+	'linux'		=>	'[^-]+',
+	'netbsd'	=>	'netbsd-.+'
+);
+sub varchmatch {
+	my ($arch,$varch)=@_;
+	my $vre=$varchtable{$varch};
+
+	if($vre eq '') {
+		return(0);
+	}
+	if($arch=~/$vre/) {
+		return(1);
+	} else {
+		return(0);
+	}
+}
+
+sub evalarchrule {
+	my ($arch,@select)=@_;
+	my $reversed=0;
+	my $t;
+
+	foreach $rule (@select) {
+		if($rule eq "all") {
+			$reversed=1;
+			next;
+		}
+		if($rule=~m/^!(.+)/) {
+			$t=$1;
+			$reversed=1;
+			if(varchmatch($arch,$t) or $arch eq $t) {
+				return(0);
+			} else {
+				next;
+			}
+		}
+		if(varchmatch($arch,$rule) or $arch eq $rule) {
+			return(1);
+		}
+	}
+	if($reversed) {
+		return(1);
+	} else {
+		return(0);
+	}
+}
+
+$arch=shift @ARGV;
+print "install:\n";
+while (<>) {
+	next if /^#/;	# handle comment lines
+	($src,$select,$dest)=split(/\s+/);
+	@select=split(",",$select);
+	if(evalarchrule($arch,@select)) {
+		if($dest=~m#/[s]*bin#) {
+			$flags='-m 755';
+		} else {
+			$flags='-m 644';
+		}
+		print "\tinstall $flags $src debian/$dest\n";
+	}
+}
diff -urN util-linux-2.11u/debian/mk/install.in util-linux-2.11u-freebsd/debian/mk/install.in
--- util-linux-2.11u/debian/mk/install.in	1969-12-31 19:00:00.000000000 -0500
+++ util-linux-2.11u-freebsd/debian/mk/install.in	2002-11-07 00:50:28.000000000 -0500
@@ -0,0 +1,129 @@
+# source path			arch			install path
+HISTORY					all				tmp/usr/share/doc/util-linux/changelog
+HISTORY					all				tmp-util-linux-locales/usr/share/doc/util-linux-locales/changelog
+HISTORY					!freebsd-i386	tmp-mount/usr/share/doc/mount/changelog
+HISTORY					all				tmp-bsd/usr/share/doc/bsdutils/changelog
+debian/README.script	all				tmp-bsd/usr/share/doc/bsdutils
+debian/README.Debian.hwclock	!freebsd-i386,!s390	tmp/usr/share/doc/util-linux
+debian/changelog		all				tmp/usr/share/doc/util-linux/changelog.Debian
+debian/changelog		all				tmp-util-linux-locales/usr/share/doc/util-linux-locales/changelog.Debian
+debian/changelog		!freebsd-i386	tmp-mount/usr/share/doc/mount/changelog.Debian
+debian/changelog		all				tmp-bsd/usr/share/doc/bsdutils/changelog.Debian
+debian/changelog.Debian-mount.old		!freebsd-i386		tmp-mount/usr/share/doc/mount/changelog.Debian-mount.old
+debian/conffiles		!freebsd-i386,!s390	tmp/DEBIAN
+debian/fstab.example2	all				tmp/usr/share/doc/util-linux/examples
+debian/hwclock.sh		!freebsd-i386,!s390	tmp/etc/init.d
+debian/hwclockfirst.sh	!freebsd-i386,!s390	tmp/etc/init.d
+debian/lintian-override	all				tmp/usr/share/lintian/overrides/util-linux
+debian/mime.util-linux	all				tmp/DEBIAN
+debian/mount.fstab		!freebsd-i386	tmp-mount/usr/share/doc/mount/examples/fstab
+debian/postinst			all				tmp/DEBIAN
+debian/postrm			all				tmp/DEBIAN
+debian/preinst			all				tmp/DEBIAN
+debian/prerm			all				tmp/DEBIAN
+debian/util-linux-locales.postinst		all		tmp-util-linux-locales/DEBIAN
+debian/util-linux-locales.prerm		all		tmp-util-linux-locales/DEBIAN
+debian/mount.postinst	!freebsd-i386		tmp-mount/DEBIAN
+debian/mount.prerm		!freebsd-i386		tmp-mount/DEBIAN
+debian/bsdutils.postinst	all			tmp-bsd/DEBIAN
+debian/bsdutils.prerm		all			tmp-bsd/DEBIAN
+disk-utils/blockdev		!freebsd-i386	tmp/sbin
+disk-utils/blockdev.8	!freebsd-i386	tmp/usr/share/man/man8
+disk-utils/elvtune		!freebsd-i386	tmp/usr/sbin
+disk-utils/elvtune.8	!freebsd-i386	tmp/usr/share/man/man8
+disk-utils/fdformat		!freebsd-i386	tmp/usr/bin
+disk-utils/fdformat.8	!freebsd-i386	tmp/usr/share/man/man8
+disk-utils/fsck.minix	!freebsd-i386,!sparc	tmp/sbin
+disk-utils/fsck.minix.8	!freebsd-i386,!sparc	tmp/usr/share/man/man8
+disk-utils/mkfs			!freebsd-i386,!sparc	tmp/sbin
+disk-utils/mkfs.8		!freebsd-i386,!sparc	tmp/usr/share/man/man8
+disk-utils/mkfs.minix	!freebsd-i386,!sparc	tmp/sbin
+disk-utils/mkfs.minix.8	!freebsd-i386,!sparc	tmp/usr/share/man/man8
+disk-utils/mkswap		!freebsd-i386	tmp/sbin
+disk-utils/mkswap.8		!freebsd-i386	tmp/usr/share/man/man8
+disk-utils/raw			!freebsd-i386	tmp/sbin
+disk-utils/raw.8		!freebsd-i386	tmp/usr/share/man/man8
+fdisk/README.cfdisk		!sparc,!freebsd-i386,!s390,!m68k	tmp/usr/share/doc/util-linux
+fdisk/README.fdisk		!freebsd-i386,!s390,!m68k	tmp/usr/share/doc/util-linux
+fdisk/sfdisk.examples	all				tmp/usr/share/doc/util-linux/examples
+fdisk/fdisk				!freebsd-i386,!s390,!m68k	tmp/sbin
+fdisk/fdisk.8			!freebsd-i386,!s390,!m68k	tmp/usr/share/man/man8
+fdisk/cfdisk			!sparc,!freebsd-i386,!s390,!m68k	tmp/sbin
+fdisk/cfdisk.8			!sparc,!freebsd-i386,!s390,!m68k	tmp/usr/share/man/man8
+fdisk/sfdisk			!sparc,!freebsd-i386,!s390,!m68k	tmp/sbin
+fdisk/sfdisk.8			!sparc,!freebsd-i386,!s390,!m68k	tmp/usr/share/man/man8
+getopt-1.1.2/getopt		all				tmp/usr/bin
+getopt-1.1.2/getopt.1	all				tmp/usr/share/man/man1
+getopt-1.1.2/parse.bash	all				tmp/usr/share/doc/util-linux/examples
+getopt-1.1.2/parse.tcsh	all				tmp/usr/share/doc/util-linux/examples
+getopt-1.1.2/test.bash	all				tmp/usr/share/doc/util-linux/examples
+getopt-1.1.2/test.tcsh	all				tmp/usr/share/doc/util-linux/examples
+hwclock/hwclock			!freebsd-i386,!s390	tmp/sbin
+hwclock/hwclock.8		!freebsd-i386,!s390	tmp/usr/share/man/man8
+login-utils/README.getty		all		tmp/usr/share/doc/util-linux
+login-utils/README.modems-with-agetty	all		tmp/usr/share/doc/util-linux
+login-utils/README.poeigl		all		tmp/usr/share/doc/util-linux
+login-utils/agetty		all				tmp/sbin
+login-utils/agetty.8	all				tmp/usr/share/man/man8
+login-utils/wall		all				tmp-bsd/usr/bin
+login-utils/wall.1		all				tmp-bsd/usr/share/man/man1
+misc-utils/chkdupexe	all				tmp/usr/bin
+misc-utils/chkdupexe.1	all				tmp/usr/share/man/man1
+misc-utils/ddate		all				tmp/usr/bin
+misc-utils/ddate.1		all				tmp/usr/share/man/man1
+misc-utils/logger		all				tmp-bsd/usr/bin
+misc-utils/logger.1		all				tmp-bsd/usr/share/man/man1
+misc-utils/mcookie		all				tmp/usr/bin
+misc-utils/mcookie.1	all				tmp/usr/share/man/man1
+misc-utils/namei		all				tmp/usr/bin
+misc-utils/namei.1		all				tmp/usr/share/man/man1
+misc-utils/replay.1		all				tmp-bsd/usr/share/man/man1
+misc-utils/script		all				tmp-bsd/usr/bin
+misc-utils/script.1		all				tmp-bsd/usr/share/man/man1
+misc-utils/setterm		!freebsd-i386	tmp/usr/bin
+misc-utils/setterm.1	!freebsd-i386	tmp/usr/share/man/man1
+misc-utils/whereis		all				tmp/usr/bin
+misc-utils/whereis.1	all				tmp/usr/share/man/man1
+mount/README.mount		!freebsd-i386	tmp-mount/usr/share/doc/mount
+mount/fstab.5			!freebsd-i386	tmp/usr/share/man/man5
+mount/nfs.5				!freebsd-i386	tmp/usr/share/man/man5
+mount/losetup			!freebsd-i386	tmp-mount/sbin
+mount/losetup.8			!freebsd-i386	tmp-mount/usr/share/man/man8
+mount/mount				!freebsd-i386	tmp-mount/bin
+mount/mount.8			!freebsd-i386	tmp-mount/usr/share/man/man8
+mount/pivot_root		!freebsd-i386	tmp/sbin
+mount/pivot_root.8		!freebsd-i386	tmp/usr/share/man/man8
+mount/swapon			!freebsd-i386	tmp-mount/sbin
+mount/swapon.8			!freebsd-i386	tmp-mount/usr/share/man/man8
+mount/swapoff.8			!freebsd-i386	tmp-mount/usr/share/man/man8
+mount/umount			!freebsd-i386	tmp-mount/bin
+mount/umount.8			!freebsd-i386	tmp-mount/usr/share/man/man8
+sys-utils/arch			all				tmp/bin
+sys-utils/arch.1		all				tmp/usr/share/man/man1
+sys-utils/cytune		!sparc,!freebsd-i386,!s390,!m68k	tmp/usr/sbin
+sys-utils/cytune.8		!sparc,!freebsd-i386,!s390,!m68k	tmp/usr/share/man/man8
+sys-utils/dmesg			!freebsd-i386	tmp/bin
+sys-utils/dmesg.8		!freebsd-i386	tmp/usr/share/man/man8
+sys-utils/ipc.info		!freebsd-i386	tmp/usr/share/info
+sys-utils/ipcrm			!freebsd-i386	tmp/usr/bin
+sys-utils/ipcrm.8		!freebsd-i386	tmp/usr/share/man/man8
+sys-utils/ipcs			!freebsd-i386	tmp/usr/bin
+sys-utils/ipcs.8		!freebsd-i386	tmp/usr/share/man/man8
+sys-utils/ramsize.8		i386			tmp/usr/share/man/man8
+sys-utils/rdev			i386			tmp/usr/sbin
+sys-utils/rdev.8		i386			tmp/usr/share/man/man8
+sys-utils/readprofile	!freebsd-i386	tmp/usr/sbin
+sys-utils/readprofile.1	!freebsd-i386	tmp/usr/share/man/man1
+sys-utils/renice		all				tmp-bsd/usr/bin
+sys-utils/renice.8		all				tmp-bsd/usr/share/man/man8
+sys-utils/rootflags.8	i386			tmp/usr/share/man/man8
+sys-utils/setsid		all				tmp/usr/bin
+sys-utils/setsid.8		all				tmp/usr/share/man/man8
+sys-utils/tunelp		!sparc,!freebsd-i386,!s390,!m68k	tmp/usr/sbin
+sys-utils/tunelp.8		!sparc,!freebsd-i386,!s390,!m68k	tmp/usr/share/man/man8
+sys-utils/vidmode.8		i386			tmp/usr/share/man/man8
+text-utils/more			all				tmp/bin
+text-utils/more.1		all				tmp/usr/share/man/man1
+text-utils/more.help	all				tmp/usr/share/util-linux
+text-utils/rev			all				tmp/usr/bin
+text-utils/rev.1		all				tmp/usr/share/man/man1
diff -urN util-linux-2.11u/debian/postinst util-linux-2.11u-freebsd/debian/postinst
--- util-linux-2.11u/debian/postinst	2002-11-07 01:06:47.000000000 -0500
+++ util-linux-2.11u-freebsd/debian/postinst	2002-11-07 01:04:18.000000000 -0500
@@ -20,7 +20,7 @@
 fi
 
 # hwclock does not work on s390 systems
-if [ `uname -m` != "s390" ]
+if [ `uname -m` != "s390" -a `uname -s` != "FreeBSD" ]
 then
   update-rc.d -f hwclock.sh remove 2>/dev/null > /dev/null
   update-rc.d hwclock.sh start 50 S . stop 25 0 6 . > /dev/null
diff -urN util-linux-2.11u/debian/rules util-linux-2.11u-freebsd/debian/rules
--- util-linux-2.11u/debian/rules	2002-11-07 01:06:47.000000000 -0500
+++ util-linux-2.11u-freebsd/debian/rules	2002-11-07 01:01:02.000000000 -0500
@@ -9,7 +9,7 @@
 endif
 
 export arch = $(DEB_HOST_ARCH)
-version := $(shell sed -e '1{;s|^util-linux (\(.*\))\ .*|\1|;q;}' debian/changelog)
+version := $(shell dpkg-parsechangelog | sed -ne 's/^Version: *\([^2]*\)/\1/p')
 
 fdisk_arch = $(findstring $(arch),alpha i386 powerpc arm mips mipsel hppa ia64)
 sparc = $(findstring $(arch),sparc)
@@ -19,12 +19,14 @@
 	$(checkdir)
 	./configure
 	$(MAKE) all arch=$(arch)
+ifneq "$(arch)" "freebsd-i386"
 	$(MAKE) disk-utils/raw
+endif
 	touch build
 
 clean:
 	$(checkdir)
-	rm -f build sys-utils/rdev
+	rm -f install build sys-utils/rdev debian/mk/install.mk
 	touch make_include
 	$(MAKE) distclean
 	find . -name '*~' -print0 | xargs -0r rm
@@ -34,159 +36,65 @@
 
 # Architecture independant stuff
 
-SUIDFILES = debian/tmp-mount/bin/{u,}mount
-
-ifneq ($(arch),$(nohwclock))
-INITFILES = debian/hwclock.sh debian/hwclockfirst.sh
-endif
-BINFILES  = sys-utils/{arch,dmesg} \
-	    text-utils/more
-SBINFILES = disk-utils/{mkswap,blockdev} login-utils/agetty disk-utils/raw
-ifneq ($(arch),$(nohwclock))
-SBINFILES += hwclock/hwclock
-endif
-SBINFILES += mount/pivot_root
-UBINFILES = sys-utils/{ipcs,ipcrm,setsid} \
-	    misc-utils/{namei,setterm,mcookie,whereis,ddate} \
-	    getopt-1.1.2/getopt text-utils/rev disk-utils/fdformat
-UBINFILES2= misc-utils/chkdupexe # debian/fdformat # don't strip these
-ULIBFILES = text-utils/more.help
-USBINFILES= sys-utils/readprofile disk-utils/elvtune # disk-utils/setfdprm
-
-MOUNTBINFILES  = mount/mount mount/umount
-MOUNTSBINFILES = mount/swapon mount/losetup
-
-#BSDBINFILES = # misc-utils/kill
-BSDUBINFILES = misc-utils/script misc-utils/logger sys-utils/renice \
-               login-utils/wall
-               # misc-utils/replay is handled seperately
-BSDMAN1FILES = login-utils/wall.1 misc-utils/script.1 \
-               misc-utils/logger.1 misc-utils/replay.1 # misc-utils/kill.1
-BSDMAN8FILES = sys-utils/renice.8
-BSDDOCFILES = debian/README.script
-
-# Architecture independant docs
-
-MAN1FILES = text-utils/{more,rev}.1 misc-utils/{namei.1,mcookie.1} \
-	    sys-utils/{arch,readprofile}.1 \
-            misc-utils/{chkdupexe.1,setterm.1,whereis.1,ddate.1} \
-	    getopt-1.1.2/getopt.1
-MAN8FILES = sys-utils/{dmesg.8,ipcrm.8,ipcs.8,setsid.8} login-utils/agetty.8 \
-	      disk-utils/{mkswap.8,blockdev.8} disk-utils/elvtune.8 \
-	      disk-utils/fdformat.8 disk-utils/raw.8 # disk-utils/setfdprm.8
-ifneq ($(arch),$(nohwclock))
-MAN8FILES += hwclock/hwclock.8
-endif
-MAN8FILES += mount/pivot_root.8
-
-EXAMPLES = debian/fstab.example2 fdisk/sfdisk.examples \
-	getopt-1.1.2/{test,parse}.{ba,tc}sh
-
+debian/mk/install.mk: debian/mk/install.in
+	debian/mk/geninstall.pl $(arch) <$< >$@
 
-INFOFILES = sys-utils/ipc.info
-DOCFILES  = login-utils/{README.getty,README.modems-with-agetty,README.poeigl}
-ifneq ($(arch),$(nohwclock))
-DOCFILES += debian/README.Debian.hwclock
-endif
-
-MOUNTMAN5FILES = mount/fstab.5 mount/nfs.5
-MOUNTMAN8FILES = mount/losetup.8 mount/swapoff.8 mount/umount.8 \
-		 mount/mount.8 mount/swapon.8
-MOUNTDOCFILES  = mount/README.mount
-
-ifneq ($(arch),$(sparc))
-SBINFILES := $(SBINFILES) disk-utils/{fsck.minix,mkfs,mkfs.minix}
-MAN8FILES := $(MAN8FILES) disk-utils/{{fsck,mkfs}.minix.8,mkfs.8}
-endif
-ifeq ($(arch),$(fdisk_arch))
-USBINFILES:= $(USBINFILES) sys-utils/{tunelp,cytune}
-SBINFILES := $(SBINFILES) fdisk/{cfdisk,fdisk,sfdisk}
-MAN8FILES := $(MAN8FILES) fdisk/{cfdisk.8,fdisk.8,sfdisk.8} \
-	    sys-utils/{tunelp.8,cytune.8}
-DOCFILES  := $(DOCFILES) fdisk/README.{c,}fdisk
-endif
-ifeq ($(arch),$(sparc))
-SBINFILES := $(SBINFILES) fdisk/fdisk
-MAN8FILES := $(MAN8FILES) fdisk/fdisk.8
-DOCFILES  := $(DOCFILES) fdisk/README.fdisk
-endif
-ifeq ($(arch),i386)
-USBINFILES:= $(USBINFILES) sys-utils/rdev
-MAN8FILES := $(MAN8FILES) sys-utils/{rdev.8,vidmode.8} \
-		sys-utils/{ramsize.8,rootflags.8}
-endif
-
-install:
-
-binary-indep:	checkroot build binary-arch
-	$(checkdir)
-	# This assumes non-native, and only one hyphen in the version number.
-	dpkg-gencontrol -isp -putil-linux-locales -Pdebian/tmp-util-linux-locales -VUpstream=$$(sed 's/^.*(\(.*\)-.*).*/\1/; q' debian/changelog)
-	dpkg --build debian/tmp-util-linux-locales ..
-
-binary-arch:	checkroot build
+install: build debian/mk/install.mk
 	rm -rf debian/tmp*
 	install -d debian/tmp/{DEBIAN,bin,sbin,etc/init.d,usr/{share/locale/{cs,da,de,es,fr,it,ja,nl,pt_BR,sv,tr}/LC_MESSAGES,lib/mime/packages,sbin,bin,share/man/{man1,man8},share/info,lib,share/util-linux,share/doc/$(package)/examples,share/lintian/overrides}}
-
-	install -s $(BINFILES)  debian/tmp/bin
-	install -s $(SBINFILES) debian/tmp/sbin
-	install -s $(UBINFILES) debian/tmp/usr/bin
-	install    $(UBINFILES2) debian/tmp/usr/bin
-ifneq ($(USBINFILES),)
-	install -s $(USBINFILES) debian/tmp/usr/sbin
+	install -d debian/tmp-util-linux-locales/usr/share/doc/util-linux-locales
+	install -d debian/tmp-util-linux-locales/DEBIAN
+	install -d debian/tmp-mount/{DEBIAN,bin,sbin,usr/share/{man/{man8,man5},doc/mount/examples}}
+	install -d debian/tmp-bsd/{DEBIAN,bin,usr/{bin,share/man/{man8,man1},share/doc/bsdutils}}
+	# run the autogenerate install script
+	$(MAKE) -f debian/mk/install.mk install
+	# this could be replaced by a test to see if rdev was installed
 ifeq ($(arch), i386)
 	ln -s rdev debian/tmp/usr/sbin/ramsize
 	ln -s rdev debian/tmp/usr/sbin/vidmode
 	ln -s rdev debian/tmp/usr/sbin/rootflags
 endif
-endif
-ifneq ($(INITFILES),)
-	install -m 755 $(INITFILES) debian/tmp/etc/init.d
-endif
-	install -m 644 $(ULIBFILES) debian/tmp/usr/share/util-linux
-	install -m 644 $(MAN1FILES) debian/tmp/usr/share/man/man1
-	install -m 644 $(MAN8FILES) debian/tmp/usr/share/man/man8
-	install -m 644 $(INFOFILES) debian/tmp/usr/share/info
-	install -m 644 debian/lintian-override debian/tmp/usr/share/lintian/overrides/util-linux
 	cd po && make install DESTDIR=../debian/tmp
-	install -m 644 $(DOCFILES)  debian/tmp/usr/share/doc/$(package)
-	install -m 644 $(EXAMPLES)  debian/tmp/usr/share/doc/$(package)/examples
 ifeq ($(arch), powerpc)
 	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
-	(cd debian/tmp/sbin ; mv agetty getty)
-	(cd debian/tmp/usr/share/man/man8 ; mv agetty.8 getty.8)
+	# FIXME: should use a test to see if hwclock was installed, instead of nohwclock
 ifneq ($(arch), $(nohwclock))
 ifneq ($(arch), powerpc)
 	(cd debian/tmp/usr/share/man/man8 && ln -s hwclock.8.gz clock.8.gz)
 endif
 endif
+	# change agetty to getty
+	(cd debian/tmp/sbin ; mv agetty getty)
+	(cd debian/tmp/usr/share/man/man8 ; mv agetty.8 getty.8)
 	(cd debian/tmp/usr/share/doc/$(package) ; mv README.modems-with-agetty README.modems-with-getty )
 	perl -pi.bak -e 's/agetty/getty/g' debian/tmp/usr/share/man/man8/getty.8 \
 	debian/tmp/usr/share/doc/$(package)/README.getty \
 	debian/tmp/usr/share/doc/$(package)/README.modems-with-getty
 	rm `find debian/tmp/usr -name \*.bak`
-	install -m 644 debian/changelog \
-	  debian/tmp/usr/share/doc/$(package)/changelog.Debian
-	install -m 644 HISTORY debian/tmp/usr/share/doc/$(package)/changelog
+	# gzip all docs
 	find debian/tmp/usr/share/{info,doc,man} -type f | xargs gzip -9
-	install -m 644 debian/mime.util-linux debian/tmp/usr/lib/mime/packages/util-linux
-	install -m 644 debian/copyright debian/tmp/usr/share/doc/$(package)/copyright
-	install debian/{preinst,postinst,prerm,postrm} debian/tmp/DEBIAN/
-ifneq ($(arch),$(nohwclock))
-	install -m 644 debian/conffiles debian/tmp/DEBIAN/
-endif
+	install -m 644 debian/copyright debian/tmp/usr/share/doc/util-linux/copyright
+
 	ls debian/tmp/{bin,sbin,usr/{bin,sbin}}/* | xargs dpkg-shlibdeps -putil-linux
-	install -d debian/tmp-util-linux-locales/usr/share/doc/util-linux-locales
-	install -d debian/tmp-util-linux-locales/DEBIAN
-	install -m 755 debian/util-linux-locales.postinst debian/tmp-util-linux-locales/DEBIAN/postinst
-	install -m 755 debian/util-linux-locales.prerm debian/tmp-util-linux-locales/DEBIAN/prerm
-	mv debian/tmp/usr/share/locale debian/tmp-util-linux-locales/usr/share/
-	install -m 644 HISTORY debian/tmp-util-linux-locales/usr/share/doc/util-linux-locales/changelog
-	install -m 644 debian/changelog debian/tmp-util-linux-locales/usr/share/doc/util-linux-locales/changelog.Debian
+
+	# gzip docs for util-linux-locales
 	find debian/tmp-util-linux-locales/usr/share/doc -type f | xargs gzip -9
 	install -m 644 debian/copyright debian/tmp-util-linux-locales/usr/share/doc/util-linux-locales/copyright
+
+	# fix package scripts
+	chmod 755 debian/tmp*/DEBIAN/{preinst,postinst,prerm,postrm}
+
+	touch install
+
+binary-indep:	checkroot build binary-arch
+	$(checkdir)
+	# This assumes non-native, and only one hyphen in the version number.
+	dpkg-gencontrol -isp -putil-linux-locales -Pdebian/tmp-util-linux-locales -VUpstream=$$(sed 's/^.*(\(.*\)-.*).*/\1/; q' debian/changelog)
+	dpkg --build debian/tmp-util-linux-locales ..
+
+binary-arch:	checkroot build install
 	dpkg-gencontrol -isp -putil-linux
 	dpkg --build debian/tmp ..
 
@@ -203,48 +111,25 @@
 	dpkg --build debian/tmp-fdisk-udeb ../fdisk-udeb_$(shell dpkg-parsechangelog | grep ^Version: | cut -d ' ' -f 2)_$(arch).udeb
 endif
 
+	# FIXME: this should instead check to see if mount was installed
+ifneq ($(arch),freebsd-i386)
 	# Mount
-	install -d debian/tmp-mount/{DEBIAN,bin,sbin,usr/share/{man/{man8,man5},doc/mount/examples}}
-	install -m 4755 -o root -s $(MOUNTBINFILES) debian/tmp-mount/bin/.
-	install -m 755 -s $(MOUNTSBINFILES) debian/tmp-mount/sbin/.
-	install -m 644 $(MOUNTMAN8FILES) debian/tmp-mount/usr/share/man/man8
-	install -m 644 $(MOUNTMAN5FILES) debian/tmp-mount/usr/share/man/man5
-	install -m 644 $(MOUNTDOCFILES) debian/tmp-mount/usr/share/doc/mount
+	chmod 4775 debian/tmp-mount/bin/*
 	(cd debian/tmp-mount/sbin ; ln -s swapon swapoff)
-	install -m 644 debian/mount.fstab \
-	  debian/tmp-mount/usr/share/doc/mount/examples/fstab
-	install -m 644 debian/changelog \
-	  debian/tmp-mount/usr/share/doc/mount/changelog.Debian
-	install -m 644 debian/changelog.Debian-mount.old \
-	  debian/tmp-mount/usr/share/doc/mount/changelog.Debian-mount.old
-	install -m 644 HISTORY debian/tmp/usr/share/doc/$(package)/changelog
 	find debian/tmp-mount/usr/share/{doc,man} -type f | xargs gzip -9
 	install -m 644 debian/copyright debian/tmp-mount/usr/share/doc/mount/copyright
-	install debian/mount.postinst debian/tmp-mount/DEBIAN/postinst
-	install debian/mount.prerm   debian/tmp-mount/DEBIAN/prerm
 	ls debian/tmp-mount/{bin,sbin}/* | xargs dpkg-shlibdeps -pmount
 	dpkg-gencontrol -isp -pmount -Pdebian/tmp-mount
 	dpkg --build debian/tmp-mount ..
+endif
 
 	# Bsdutils
-	install -d debian/tmp-bsd/{DEBIAN,bin,usr/{bin,share/man/{man8,man1},share/doc/bsdutils}}
-	# install -m 755 -o root -s $(BSDBINFILES) debian/tmp-bsd/bin/.
-	install -m 755 -s $(BSDUBINFILES) debian/tmp-bsd/usr/bin/.
-	cp misc-utils/replay.pl debian/tmp-bsd/usr/bin/replay
-	chmod 755 debian/tmp-bsd/usr/bin/replay
-	install -m 644 $(BSDMAN8FILES) debian/tmp-bsd/usr/share/man/man8
+	install -m 755 misc-utils/replay.pl debian/tmp-bsd/usr/bin/replay
 	mv debian/tmp-bsd/usr/share/man/man8/renice.8 debian/tmp-bsd/usr/share/man/man1/renice.1
-	install -m 644 $(BSDMAN1FILES) debian/tmp-bsd/usr/share/man/man1
-	install -m 644 $(BSDDOCFILES) debian/tmp-bsd/usr/share/doc/bsdutils
 	chown root.tty debian/tmp-bsd/usr/bin/wall
 	chmod g+s debian/tmp-bsd/usr/bin/wall
-	install -m 644 debian/changelog \
-	  debian/tmp-bsd/usr/share/doc/bsdutils/changelog.Debian
-	install -m 644 HISTORY debian/tmp/usr/share/doc/$(package)/changelog
 	find debian/tmp-bsd/usr/share/{doc,man} -type f | xargs gzip -9
 	install -m 644 debian/copyright debian/tmp-bsd/usr/share/doc/bsdutils/copyright
-	install debian/bsdutils.postinst debian/tmp-bsd/DEBIAN/postinst
-	install debian/bsdutils.prerm   debian/tmp-bsd/DEBIAN/prerm
 	ls debian/tmp-bsd/usr/bin/* | xargs dpkg-shlibdeps -pbsdutils
 	dpkg-gencontrol -isp -pbsdutils -Pdebian/tmp-bsd -v1:$(version)
 	dpkg --build debian/tmp-bsd ..
diff -urN util-linux-2.11u/login-utils/agetty.c util-linux-2.11u-freebsd/login-utils/agetty.c
--- util-linux-2.11u/login-utils/agetty.c	2002-07-29 03:36:42.000000000 -0400
+++ util-linux-2.11u-freebsd/login-utils/agetty.c	2002-11-01 13:51:01.000000000 -0500
@@ -18,7 +18,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/ioctl.h>
-#include <termio.h>
+#include <termios.h>
 #include <signal.h>
 #include <errno.h>
 #include <sys/types.h>
@@ -33,7 +33,7 @@
 #include "xstrncpy.h"
 #include "nls.h"
 
-#ifdef __linux__
+#if defined(__linux__) || defined(__FreeBSD__)
 #include "pathnames.h"
 #include <sys/param.h>
 #define USE_SYSLOG
@@ -113,6 +113,11 @@
 #define	TCSETAW	TCSETSW
 #endif
 
+#ifdef __FreeBSD__
+#define termio termios
+#define CBAUD	0010017
+#endif
+
  /*
   * This program tries to not use the standard-i/o library.  This keeps the
   * executable small on systems that do not have shared libraries (System V
@@ -686,8 +691,13 @@
      * 5 seconds seems to be a good value.
      */
 
+#ifndef TCGETA
+    if (tcgetattr(0, tp) <0)
+	error("%s: tcgetattr: %m", tty);
+#else
     if (ioctl(0, TCGETA, tp) < 0)
 	error("%s: ioctl: %m", tty);
+#endif
 
     /*
      * It seems to be a terminal. Set proper protections and ownership. Mode
@@ -726,6 +736,8 @@
 #ifdef __linux__
     /* flush input and output queues, important for modems! */
     (void) ioctl(0, TCFLSH, TCIOFLUSH);
+#else
+    tcflush(0, TCIOFLUSH);
 #endif
 
     tp->c_cflag = CS8 | HUPCL | CREAD | speed;
@@ -733,7 +745,7 @@
 	tp->c_cflag |= CLOCAL;
     }
 
-    tp->c_iflag = tp->c_lflag = tp->c_oflag = tp->c_line = 0;
+    tp->c_iflag = tp->c_lflag = tp->c_oflag = 0;
     tp->c_cc[VMIN] = 1;
     tp->c_cc[VTIME] = 0;
 
@@ -744,7 +756,11 @@
 	tp->c_cflag |= CRTSCTS;
 #endif
 
+#ifdef __FreeBSD__
+    (void) tcsetattr(0,TCSANOW,tp);
+#else
     (void) ioctl(0, TCSETA, tp);
+#endif
 
     /* go to blocking input even in local mode */
     fcntl(0, F_SETFL, fcntl(0, F_GETFL, 0) & ~O_NONBLOCK);
@@ -788,7 +804,11 @@
     tp->c_iflag |= ISTRIP;			/* enable 8th-bit stripping */
     vmin = tp->c_cc[VMIN];
     tp->c_cc[VMIN] = 0;				/* don't block if queue empty */
+#ifdef __FreeBSD__
+    (void) tcsetattr(0,TCSANOW,tp);
+#else
     (void) ioctl(0, TCSETA, tp);
+#endif
 
     /*
      * Wait for a while, then read everything the modem has said so far and
@@ -812,7 +832,11 @@
 
     tp->c_iflag = iflag;
     tp->c_cc[VMIN] = vmin;
+#ifdef __FreeBSD__
+    tcsetattr(0, TCSANOW, tp);
+#else
     (void) ioctl(0, TCSETA, tp);
+#endif
 }
 
 /* do_prompt - show login prompt, optionally preceded by /etc/issue contents */
@@ -835,7 +859,11 @@
     if ((op->flags & F_ISSUE) && (fd = fopen(op->issue, "r"))) {
 	oflag = tp->c_oflag;			/* save current setting */
 	tp->c_oflag |= (ONLCR | OPOST);		/* map NL in output to CR-NL */
+#ifdef __FreeBSD__
+	tcsetattr(0, TCSADRAIN, tp);
+#else
 	(void) ioctl(0, TCSETAW, tp);
+#endif
 
 
 	while ((c = getc(fd)) != EOF)
@@ -947,7 +975,11 @@
 	fflush(stdout);
 
 	tp->c_oflag = oflag;			/* restore settings */
+#ifdef __FreeBSD__
+	(void) tcsetattr(0,TCSADRAIN, tp);
+#else
 	(void) ioctl(0, TCSETAW, tp);		/* wait till output is gone */
+#endif
 	(void) fclose(fd);
     }
 #endif
@@ -973,7 +1005,11 @@
     baud_index = (baud_index + 1) % op->numspeed;
     tp->c_cflag &= ~CBAUD;
     tp->c_cflag |= op->speeds[baud_index];
+#ifdef __FreeBSD__
+    (void) tcsetattr(0,TCSANOW,tp);
+#else
     (void) ioctl(0, TCSETA, tp);
+#endif
 }
 
 /* get_logname - get user name, establish parity, speed, erase, kill, eol */
@@ -1003,7 +1039,11 @@
     /* Flush pending input (esp. after parsing or switching the baud rate). */
 
     (void) sleep(1);
+#ifdef __linux__
     (void) ioctl(0, TCFLSH, TCIFLUSH);
+#else
+    tcflush(0, TCIOFLUSH);
+#endif
 
     /* Prompt for and read a login name. */
 
@@ -1105,11 +1145,6 @@
     tp->c_cc[VQUIT] = DEF_QUIT;			/* default quit */
     tp->c_cc[VEOF] = DEF_EOF;			/* default EOF character */
     tp->c_cc[VEOL] = DEF_EOL;
-#ifdef __linux__
-    tp->c_cc[VSWTC] = DEF_SWITCH;		/* default switch character */
-#else
-    tp->c_cc[VSWTCH] = DEF_SWITCH;		/* default switch character */
-#endif
 
     /* Account for special characters seen in input. */
 
@@ -1139,11 +1174,13 @@
     }
     /* Account for upper case without lower case. */
 
+#ifndef __FreeBSD__
     if (cp->capslock) {
 	tp->c_iflag |= IUCLC;
 	tp->c_lflag |= XCASE;
 	tp->c_oflag |= OLCUC;
     }
+#endif
     /* Optionally enable hardware flow control */
 
 #ifdef	CRTSCTS
@@ -1153,8 +1190,13 @@
 
     /* Finally, make the new settings effective */
 
+#ifdef __FreeBSD__
+    if (tcsetattr(0,TCSANOW,tp) < 0)
+	error("%s: tcsetattr: %m", op->tty);
+#else
     if (ioctl(0, TCSETA, tp) < 0)
 	error("%s: ioctl: TCSETA: %m", op->tty);
+#endif
 }
 
 /* caps_lock - string contains upper case without lower case */
diff -urN util-linux-2.11u/misc-utils/Makefile util-linux-2.11u-freebsd/misc-utils/Makefile
--- util-linux-2.11u/misc-utils/Makefile	2002-04-05 07:03:36.000000000 -0500
+++ util-linux-2.11u-freebsd/misc-utils/Makefile	2002-11-07 00:44:04.000000000 -0500
@@ -40,9 +40,11 @@
 endif
 
 ifeq "$(HAVE_NCURSES)" "yes"
+ifneq "$(OS)" "freebsd"
 USRBIN:=$(USRBIN) setterm
 MAN1:=$(MAN1) setterm.1
 endif
+endif
 
 # For script only
 LIBPTY=
@@ -60,6 +62,9 @@
 $(NEEDS_CURSES):
 ifeq "$(HAVE_NCURSES)" "yes"
 	$(CC) $(LDFLAGS) $^ -o $@ $(LIBCURSES)
+	ifeq $(OS) "freebsd"
+		@echo $@ not available on this platform
+	endif
 else
 	@echo $@ not made since it requires ncurses
 endif
@@ -92,8 +97,10 @@
 write: write.o $(LIB)/carefulputc.o
 
 ifeq "$(HAVE_NCURSES)" "yes"
+ifneq "$(OS)" "freebsd"
 setterm: setterm.o
 endif
+endif
 
 install: all
 	$(INSTALLDIR) $(BINDIR) $(USRBINDIR)
diff -urN util-linux-2.11u/misc-utils/mcookie.c util-linux-2.11u-freebsd/misc-utils/mcookie.c
--- util-linux-2.11u/misc-utils/mcookie.c	2002-03-08 18:00:52.000000000 -0500
+++ util-linux-2.11u-freebsd/misc-utils/mcookie.c	2002-11-01 13:52:04.000000000 -0500
@@ -20,7 +20,7 @@
  *
  */
 
-#ifdef __linux__
+#if defined(__linux__) || defined(__FreeBSD__)
 #define HAVE_GETTIMEOFDAY 1
 #endif
 
diff -urN util-linux-2.11u/sys-utils/Makefile util-linux-2.11u-freebsd/sys-utils/Makefile
--- util-linux-2.11u/sys-utils/Makefile	2001-11-09 12:13:50.000000000 -0500
+++ util-linux-2.11u-freebsd/sys-utils/Makefile	2002-11-02 00:07:06.000000000 -0500
@@ -17,13 +17,19 @@
 # Where to put binaries?
 # See the "install" rule for the links. . .
 
+ifeq "$(OS)" "freebsd"
+BIN=	arch
+else
 BIN=            arch dmesg
+endif
 
+ifeq "$(OS)" "freebsd"
+USRBIN=		renice setsid
+else
 USRBIN=		cytune ipcrm ipcs renice setsid
-
 USRSBIN=	readprofile tunelp
-
 SBIN= 		ctrlaltdel
+endif
 
 NOTMADE=
 
@@ -37,10 +43,12 @@
 endif
 endif
 
+ifneq "$(OS)" "freebsd"
 ifeq "$(ARCH)" "intel"
 MAN8:=$(MAN8) rdev.8 ramsize.8 rootflags.8 vidmode.8
 USRSBIN:=$(USRSBIN) rdev
 endif
+endif
 
 # Where to put datebase files?
 
diff -urN util-linux-2.11u/text-utils/more.c util-linux-2.11u-freebsd/text-utils/more.c
--- util-linux-2.11u/text-utils/more.c	2002-11-07 01:06:47.000000000 -0500
+++ util-linux-2.11u-freebsd/text-utils/more.c	2002-11-02 00:15:46.000000000 -0500
@@ -63,6 +63,11 @@
 #include <regex.h>
 #undef _REGEX_RE_COMP
 
+/* define CBAUD for FreeBSD */
+#ifndef CBAUD
+#define CBAUD	0010017
+#endif
+
 /* #define MOREHELPFILE "/usr/share/util-linux/more.help" */
 #define VI		"vi"	/* found on the user's path */
 
@@ -1645,7 +1650,7 @@
     }
     if (feof (file)) {
 	if (!no_intty) {
-#ifndef __linux__
+#if !defined(__linux__) && !defined(__FreeBSD__)
 				/* No longer in libc 4.5.8. . . */
 	    file->_flags &= ~STDIO_S_EOF_SEEN; /* why doesn't fseek do this ??!!??! */
 #endif
@@ -1892,7 +1897,11 @@
     tcgetattr(fileno(stderr), &otty);
     savetty0 = otty;
     slow_tty = (otty.c_cflag & CBAUD) < B1200;
+#ifdef __FreeBSD__
+	hardtabs = 1;
+#else
     hardtabs = (otty.c_oflag & TABDLY) != XTABS;
+#endif
     if (!no_tty) {
 	otty.c_lflag &= ~(ICANON|ECHO);
 	otty.c_cc[VMIN] = 1;

Reply to: