Subject: Collected Debian patches for OpenAFS
Author: Russ Allbery <rra@debian.org>

The packaging for OpenAFS is maintained in Git with no Debian-specific
patches, just cherry-picks from upstream (possibly from upstream Gerrit).
This makes it complex to separate the changes into individual patches.
They are therefore all included in a single Debian patch.

For full commit history and separated commits, see the packaging Git
repository.
--- /dev/null
+++ openafs-1.6.0/src/libuafs/make_h_tree.pl
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+# make_h_tree.pl
+# Generate an h tree that includes the appropriate sys headers
+#
+# Usage: make_h_tree.pl ${SRC} ...
+#
+# The specified makefiles will be scanned for variable values.  The h
+# directory will be created under the current directory and populated with
+# stubs that include the actual header file for every header included by any
+# source file in the ${SRC} directories.  This is an ugly hack to work around
+# the naming of header files using h instead of their proper names elsewhere
+# in the code.
+
+use IO::File;
+
+if (@ARGV < 1) {
+  die "Usage: $0 SRC ...\n";
+}
+
+%remap = ('h' => 'sys');
+foreach $src (keys %remap) {
+    mkdir($src, 0777) or die "$src: $!\n";
+%seen = ();
+@q = map { glob ("$_/*.[Sc]") } @ARGV;
+  while (@q) {
+    $src = shift @q;
+    $content = new IO::File($src, O_RDONLY) or die "$src: $!\n";
+  LINE:
+    while (<$content>) {
+      chomp;
+      if (/^\s*\#\s*include\s*[<\"](?:\.\.\/)?([^\/>\"]*)(.*?)[>\"]/) {
+	$inc = "$1$2";
+	if (exists $seen{$inc}) {
+	  next;
+	} elsif (exists $remap{$1}  &&  $2 !~ /.\//) {
+	  $H = new IO::File("$inc", O_WRONLY|O_CREAT|O_TRUNC, 0666)
+	    or die "$inc: $!\n";
+	  print $H "#include <sys$2>\n";
+	  $H->close() or die "$inc: $!\n";
+          $seen{$inc} = 1;
+	}
+      }
+    }
+  }
+}
--- openafs-1.6.0.orig/src/libuafs/Makefile.common.in
+++ openafs-1.6.0/src/libuafs/Makefile.common.in
@@ -1484,9 +1484,9 @@ $(JUAFS)/xdr_len.o: $(TOP_SRC_RX)/xdr_le
 	$(CRULE1)
 
 clean:
-	-$(RM) -rf UAFS* JUAFS* AFSWEB* nsapi des afs afsint config rx
-	-$(RM) -f  h net netinet rpc ufs machine inet nfs sys des linktest $(AFS_OS_CLEAN)
-
+	-$(RM) -rf UAFS* JUAFS* AFSWEB* nsapi afsd afs afsint config rx
+	-$(RM) -rf h
+	-$(RM) linktest $(AFS_OS_CLEAN)
 
 install: UAFS/$(LIBUAFS) JUAFS/$(LIBJUAFS)
 	${INSTALL} -d ${DESTDIR}${libdir}
@@ -1531,15 +1531,10 @@ AFSWEB:
 	mkdir -p $@
 
 setup_common:
-	-$(RM) -f h net netinet rpc ufs nfs machine sys inet nsapi afsd
-	-ln -s ${ISYSROOT}/usr/include/sys h
-	-ln -s ${ISYSROOT}/usr/include/net net
-	-ln -s ${ISYSROOT}/usr/include/netinet netinet
-	-ln -s ${ISYSROOT}/usr/include/rpc rpc
-	-ln -s ${ISYSROOT}/usr/include/sys sys
-	-ln -s ${ISYSROOT}/usr/include/nfs nfs
-	-ln -s ${ISYSROOT}/usr/include/inet inet
-	-ln -s ${ISYSROOT}/usr/include/ufs ufs
+	-$(RM) -f nsapi afsd
+	-$(RM) -rf h
+	@TOP_SRCDIR@/libuafs/make_h_tree.pl $(TOP_SRC_AFS) $(TOP_SRC_VNOPS) \
+		$(TOP_SRC_RX)
 	-ln -s $(TOP_SRCDIR)/afsd afsd
 	-ln -s $(NS_INCL) nsapi
 
