Add code signing with signtool.exe to the build process.
If all three of the required CODESIGN_xxxx environment
variables are defined, signtool will be used to sign each
exe, dll, and installer as they are built.
The three environment variables are:
CODESIGN_DESC = <description of application>
CODESIGN_TIMESTAMP = <url of certificate authority timestamp server>
CODESIGN_URL = <end user help URL>
The default signing certificate is the one that will be used by
signtool. If these environment variables are not defined, code
signing will be skipped.
Add --with-linux-kernel-packaging configure flag which disables building
multiple kernels for different MP flavors, sets the kernel module name to
openafs.ko with no version, and installs the modules into the standard
Linux location.
Use PATH_CPP instead of CPP everywhere and always redirect the output
instead of assuming that it will write to a file. Hopefully this is the
least common denominator across all systems, although it still isn't
fully correct for systems that have no separate cpp binary.
- The exportfs code is updated for the new export ops. The changes are made
conditional on a new configure test that detects the new ops. fh_to_dentry()
basically replaces decode_fh and uses our own get_dentry function instead of the
now defunct find_exported_dentry.
- A check for fh_len=4 is removed - in testing this value is always 6, possibly
because of changes in the kernel code.
- The check for authtab in osi_nfssrv.c assumes that an undefined weak symbol is
0. On my system, an unresolved weak symbol in a loaded module gets the value
0xfffffffe (-2 or -ENOENT) - again, probably a change on the kernel side. Check
that the pointer is not an error constant using IS_ERR().
- In osi_vfsops.c, only use the export_ops bits if building the translator
afspag: the problem here was dealing with unresolved symbols
- afs_showflags is redefined in afs_pag_call.c so it's available for the afspag
module
- A new source file afs_warn.c gets the afs_warn* functions from afs_util.c.
This allows the afspag module to get the afs_warnuser function without dragging
in too many symbols. The new file is attached separately.
other:
- d_path() now takes a struct path argument - includes a new configure test
- osi_vfsmnt -> osi_vfsmount in osi_misc.c Looked like a typo?
- reorder the remove_proc_entry() calls - we need to remove the children before
the parent (introduced with my earlier patch)
When probing in configure for cpp, use the user's PATH first and then
the /lib and /usr/ccs/lib directories. Set PATH_CPP instead of CPP,
since the latter is just overwritten by Autoconf. Use PATH_CPP by
preference in rxgen and when pre-processing assembly, since otherwise
newer gcc will treat the input file as linker input and not do anything
with it. Don't assume that cpp writes to the second argument; gcc
apparently doesn't always do this. Instead, redirect standard output.
Fix a disconnected-mode merge conflict with an older import of disconnected
to HEAD that caused a duplicate definition of PDiscon. I believe this
problem was only on HEAD.
Use the correct subcommand name (fs getacl instead of fs_getacl) on the
HTML index page, even though we have to use the underscore in the NAME
section of the actual POD documentation.
Use undef in the arch-specific param file to override UCONTEXT rather
than adding a conditional in a generic file, making arm work the same
as 32-bit SPARC. Disable UCONTEXT on parisc as well; glibc doesn't
provide the ucontext functions on that architecture.
Current Linux kernels always append a period and the PID to "core" when
creating core files for multithreaded processes. Teach bosserver to scan
the directory into which core files are deposited looking for such core
files and treat them like any other core file if the PID matches the
process that just died.
This patch has been in the Debian OpenAFS packages for some time without
problems.
Add additional missing commands to the to-do list. Add a section on man
page section numbers and their rationale. Document that embedding a
license in the man page isn't required if it's one of the licenses in our
LICENSE file.
Russ Allbery [Mon, 30 Jun 2008 20:32:18 +0000 (13:32 -0700)]
Don't try to use UCONTEXT on hppa/parisc
glibc doesn't implement the ucontext functions on hppa/parisc, so don't
try to use them. This probably means that OpenAFS user space is broken
on hppa right now. That's not a surprise, given that we don't have a
2.6 kernel param file either.
Russ Allbery [Sat, 28 Jun 2008 06:52:31 +0000 (23:52 -0700)]
Ship fewer debug symbols
Don't include debug symbols for /sbin, /usr/bin, and /usr/sbin binaries or
PAM modules in openafs-dbg, just the servers in /usr/lib/openafs, since
those are the most likely cases where backtraces are important and a 10MB
debug symbol package seems like overkill.
Russ Allbery [Sat, 28 Jun 2008 06:25:50 +0000 (23:25 -0700)]
Add lpia as an alias for i386
Enable support for lpia by making it synonymous with i386. This means
that lpia systems will get a sysname of i386_linux26, which isn't ideal
but should at least work.
Russ Allbery [Sat, 28 Jun 2008 06:01:22 +0000 (23:01 -0700)]
Exit successfully in init script if openafs isn't in modules.dep
If the openafs module isn't listed in modules.dep, exit with a zero
status from the init script even if modprobe fails. Otherwise, if a
module package and openafs-client are installed at the same time and
openafs-client is set up before the module package, the init script can
find the module, fail the modprobe (because the dependency map hasn't
yet been updated), and fail the whole installation. Exiting with a zero
status still doesn't get OpenAFS started, but at least it doesn't leave
the system in a partly installed state. Thanks to Durk Strooisma for the
analysis.
Russ Allbery [Sat, 28 Jun 2008 05:44:23 +0000 (22:44 -0700)]
Stop using quilt to manage patches
Remove the remaining patches that are managed through branches. Drop
the build-dependency on quilt and don't run it during the build. Don't
remove the afs-up man page in the clean target since it's done with Git
now (although this will be reverted in a moment).
Russ Allbery [Sat, 28 Jun 2008 05:37:45 +0000 (22:37 -0700)]
Add a man page for klog.krb5
Apply quilt patch klog-krb5-man-page: Man page for the
Kerberos v5 version of klog. Pulled from upstream delta
STABLE14-install-and-document-klog-krb5-20080627.
Russ Allbery [Sat, 28 Jun 2008 05:07:44 +0000 (22:07 -0700)]
Allow multiple local realms in krb.conf
Apply quilt patch multiple-local-realms: Enable listing multiple realms
in the server krb.conf file. Up to four realms may be treated as local
in that fashion for authorization purposes (instead of the single realm
supported without this patch).
This upstream patch is in the 1.5 series but not in 1.4. However, it
has been working in production at Stanford University for some time.
Russ Allbery [Sat, 28 Jun 2008 05:05:53 +0000 (22:05 -0700)]
Expose prototypes for the ktc_* functions
Apply quilt patch ktc-prototypes: Expose prototypes for the ktc_*
functions on platforms other than Windows. Fixed upstream in a different
way, but only on the 1.5 branch.
Russ Allbery [Sat, 28 Jun 2008 05:03:20 +0000 (22:03 -0700)]
Find core files properly on Linux
Linux always appends the PID to core dumps from threaded processes, so
search the directory for core dumps instead of assuming a particular
name. Suitable upstream.
Russ Allbery [Sat, 28 Jun 2008 05:01:19 +0000 (22:01 -0700)]
Build with UCONTEXT on all Linux platforms
The new glibc doesn't work with the old context code due to mangling
done in the library (the interface AFS was using wasn't a supported or
stable one). Switch to UCONTEXT for all Linux platforms, which stands
a better chance of working (but may or may not actually work).
Russ Allbery [Sat, 28 Jun 2008 04:58:01 +0000 (21:58 -0700)]
No longer reference the old Admin Reference
Apply quilt patch no-admin-reference: The Admin Reference has now been
completely replaced by the man pages, so don't refer to it since we'll no
longer bother to install it. It should be simply removed upstream.
Russ Allbery [Sat, 28 Jun 2008 04:56:03 +0000 (21:56 -0700)]
Allow overriding the default compiler and merge SPARC
Apply quilt patch compiler-flags: Use $CC for the compiler instead of
forcing cc or gcc. The corresponding upstream fix is waiting for work
to separate the kernel compiler from the userspace compilter, since $CC
should only be used for the latter on other platforms.
Also combines the sparc sysnames together, which is suitable upstream.
Russ Allbery [Sat, 28 Jun 2008 04:50:38 +0000 (21:50 -0700)]
Tweak the expected configuration directory permissions
Apply quilt patch bos-permissions: Expect the server directory to be
mode 0700 since that's where the AFS KeyFile is stored. Allow the
local directory to be mode 0755, since there's no reason for it to be
more restrictive.
Allowing the server directory to be mode 0700 causes problems upstream if
people symlink the client configuration to the server directory, which is
recommended by some documentation, so this is not applied upstream.
Russ Allbery [Sat, 28 Jun 2008 04:47:18 +0000 (21:47 -0700)]
Re-add upstream skip of PAM builds on amd64_linux24
We always build the userspace code on amd64 as amd64_linux26, so this
check is now harmless. Re-add the check to match upstream and reduce
unnecessary differences.
Russ Allbery [Sat, 28 Jun 2008 04:43:32 +0000 (21:43 -0700)]
Ugly hack to build the PAM modules PIC
Apply quilt patch pam-build: Apply an incredibly ugly hack to build the
PAM modules against the shared objects generated for the shared libraries.
Not suitable upstream in its current form. The right upstream solution is
to standardize the shared library ABI and install it with a real SONAME,
and then link the PAM modules against it. It may be that we'll drop
kaserver support and stop building the PAM modules before we get to that,
though.
Russ Allbery [Sat, 28 Jun 2008 04:32:08 +0000 (21:32 -0700)]
Name the kernel module openafs instead of libafs
Apply quilt patch module-name: Build the kernel module as openafs.ko
instead of libafs.ko. This should really be done upstream as well, but it
poses backwards compatibility problems and it's always been called libafs
on other platforms, so it's controversial.
This implementation of the idea produces warnings and needs some
improvement.
Russ Allbery [Sat, 28 Jun 2008 04:26:13 +0000 (21:26 -0700)]
Fix the path for fstrace message catalogs
Apply quilt patch fstrace-paths: fstrace uses the NLS functions to
do message translation and needs a message catalog installed. The
default paths are rather broken. Patch the source to look for it in
/usr/share/openafs instead. Not suitable upstream with the hard-coded
paths, but something more sophisticated would be appropriate.
Russ Allbery [Sat, 28 Jun 2008 04:23:05 +0000 (21:23 -0700)]
Use the correct PTS database path in pt_util
Apply quilt patch paths: Patch pt_util to use the correct Debian patch for
the Protection Server database. The correct fix would be to use the
standard functions to find the database path.
Russ Allbery [Sat, 28 Jun 2008 04:21:30 +0000 (21:21 -0700)]
Rename the up man page to afs-up, matching our renaming
Apply quilt patch afs-up-rename: Update the up man page to say afs-up
instead, matching our renaming of the command, and rename it in the
source tree so that the generated man page will have the correct name.
Russ Allbery [Sat, 28 Jun 2008 04:17:53 +0000 (21:17 -0700)]
Remove Makefile references to removed upstream files
Apply quilt patch dfsg: Patch upstream Makefiles to remove references to
files that had to be removed from the source package for DFSG freeness
reasons.
Russ Allbery [Sat, 28 Jun 2008 04:12:54 +0000 (21:12 -0700)]
Fix permissions in the upstream tree
Mark various upstream files executable that are executable in the upstream
tarballs but weren't in the Subversion repository, probably due to missing
properties somewhere along the line.
When an SMB virtual circuit is prematurely closed due to an error
condition by one thread it is possible that there are still several
other threads still using the VC which will determine that the VC
is dead shortly. As a result we maintain a dead vc list to ensure
that dead vcs are not destroyed while still in use.
With the addition of locking though this causes a problem because the
locks allocated to the virtual circuit are not freed until the vc is
destroyed.
This patch reworks the cleanup routine to make the freeing of resources
the responsibility of the release routine when the refcount hits 0
and the VC is marked dead.
Fix several issues with the afs(1) man page. Based on the patch by Jason,
but I also documented /vicepiv as the maximum, and /vicepiu as the
maximum recommended, partition.