diff --git a/src/packaging/RedHat/afs-krb5-2.0-com_err.patch b/src/packaging/RedHat/afs-krb5-2.0-com_err.patch new file mode 100644 index 0000000000..7b496bbee3 --- /dev/null +++ b/src/packaging/RedHat/afs-krb5-2.0-com_err.patch @@ -0,0 +1,24 @@ +diff -uNr afs-krb5.orig/src/configure.in afs-krb5/src/configure.in +--- afs-krb5.orig/src/configure.in 2005-04-14 16:06:15.597138000 -0400 ++++ afs-krb5/src/configure.in 2005-04-14 16:06:44.201789856 -0400 +@@ -143,7 +143,19 @@ + LIBS="$ac_save_LIBS"]) + if test "x$afs_cv_func_getDirPath" = "xyes"; then + AC_MSG_RESULT([Setting compilation parameters for AFS 3.5 and later]) +- AKLOG_EXTRA_OBJ=adderrtable.o ++ AC_MSG_CHECKING([for add_to_error_table]) ++dnl ++dnl We may be using libcom_err from Kerberos (shared libraries), and ++dnl already have add_to_error_table ++dnl ++ AC_TRY_LINK_FUNC(add_to_error_table, have_adderr=yes, have_adderr=no) ++ if test $have_adderr != yes; then ++ AC_MSG_RESULT([no, adding adderrtable.o]) ++ AKLOG_EXTRA_OBJ=adderrtable.o ++ else ++ AC_MSG_RESULT([yes]) ++ AKLOG_EXTRA_OBJ= ++ fi + else + AC_MSG_RESULT([Setting compilation parameters for pre-AFS 3.5]) + AC_DEFINE(PRE_AFS35) diff --git a/src/packaging/RedHat/afs-krb5-2.0-krb524.patch b/src/packaging/RedHat/afs-krb5-2.0-krb524.patch new file mode 100644 index 0000000000..7503d41191 --- /dev/null +++ b/src/packaging/RedHat/afs-krb5-2.0-krb524.patch @@ -0,0 +1,31 @@ +--- afs-krb5/src/configure.in-orig 2003-03-16 20:13:34.000000000 -0500 ++++ afs-krb5/src/configure.in 2005-09-14 17:20:46.000000000 -0400 +@@ -179,14 +197,20 @@ + [ EXTRA_INC="$EXTRA_INC -I$with_krb5_obj/include -I$with_krb5_obj/include/krb5" + KADM_LIBS=`echo $KADM_LIBS | sed -e "s#-ldb#$with_krb5_obj/lib/libdb.a#"`]) + dnl +-dnl Sigh, why is this so complicated? Right now, just assume that +-dnl the 524 library is always called krb524 and will be picked up by the +-dnl Kerberos link line +-dnl +-dnl AC_CHECK_LIB(krb524, krb524_convert_princs, [KRB524LIB="-lkrb524"], [ +-dnl AC_MSG_ERROR([Cannot find 524 library, exiting]) +-dnl ]) +-KRB524LIB=-lkrb524 ++dnl The krb524 functions may be included in libkrb5 itself, or else in a ++dnl separate library named libkrb524 ++dnl ++ac_save_LIBS="$LIBS" ++KRB524LIB= ++AC_MSG_CHECKING([for krb524 library]) ++AC_CHECK_FUNC(krb524_init_ets, have_krb524=yes, have_krb524=no) ++ ++if test "$have_krb524" = no; then ++ LIBS="$LIBS -lkrb524" ++ AC_CHECK_LIB(krb524, krb524_init_ets, [KRB524LIB="-lkrb524"], ++ [AC_MSG_ERROR([Unable to find krb524 library])]) ++fi ++LIBS="$ac_save_LIBS" + + dnl AC_CHECK_LIB(kdb5, krb5_db_fetch_mkey, [KD_LIBS="-lkdb5"],[ + dnl AC_MSG_WARN([Cannot find Kerberos 5 DB library, will not be able to build DB utilities]) diff --git a/src/packaging/RedHat/afs-krb5-2.0-libsocket.patch b/src/packaging/RedHat/afs-krb5-2.0-libsocket.patch new file mode 100644 index 0000000000..e39ef2ceff --- /dev/null +++ b/src/packaging/RedHat/afs-krb5-2.0-libsocket.patch @@ -0,0 +1,39 @@ +diff -uNr afs-krb5.orig/src/configure.in afs-krb5/src/configure.in +--- afs-krb5.orig/src/configure.in 2003-03-16 20:13:34.000000000 -0500 ++++ afs-krb5/src/configure.in 2003-07-30 11:52:55.000000000 -0400 +@@ -44,14 +44,6 @@ + if test $retval -ne 0; then + AC_MSG_ERROR($krb5_config failed with error code of $retval) + fi +-AC_MSG_RESULT([Adding $krb5_cflags to CFLAGS]) +-AC_MSG_RESULT([Adding $krb5_libs to LIBS]) +-AC_MSG_RESULT([Setting KADM_CFLAGS to $krb5_cflags_kadm]) +-AC_MSG_RESULT([Setting KADM_LIBS to $krb5_libs_kadm]) +-CFLAGS="$CFLAGS $krb5_cflags" +-LIBS="$LIBS $krb5_libs" +-KADM_CFLAGS="$krb5_cflags_kadm" +-KADM_LIBS="$krb5_libs_kadm" + dnl + dnl Check for various network libraries + dnl +@@ -105,6 +97,20 @@ + AC_MSG_ERROR([Unable to find res_search function]) + fi + LIBS="$save_LIBS" ++ ++dnl ++dnl Don't add these to LIBS until after we've already looked for ++dnl libsocket, etc. Otherwise ka-forwarder won't build properly ++dnl ++AC_MSG_RESULT([Adding $krb5_cflags to CFLAGS]) ++AC_MSG_RESULT([Adding $krb5_libs to LIBS]) ++AC_MSG_RESULT([Setting KADM_CFLAGS to $krb5_cflags_kadm]) ++AC_MSG_RESULT([Setting KADM_LIBS to $krb5_libs_kadm]) ++CFLAGS="$CFLAGS $krb5_cflags" ++LIBS="$LIBS $krb5_libs" ++KADM_CFLAGS="$krb5_cflags_kadm" ++KADM_LIBS="$krb5_libs_kadm" ++ + dnl + dnl Optional support for AFS + dnl diff --git a/src/packaging/RedHat/afs-krb5-2.0-openafs1.3.patch b/src/packaging/RedHat/afs-krb5-2.0-openafs1.3.patch new file mode 100644 index 0000000000..44045a0670 --- /dev/null +++ b/src/packaging/RedHat/afs-krb5-2.0-openafs1.3.patch @@ -0,0 +1,12 @@ +diff -uNr afs-krb5.orig/src/asetkey.c afs-krb5/src/asetkey.c +--- afs-krb5.orig/src/asetkey.c 2005-04-08 15:55:35.637620000 -0400 ++++ afs-krb5/src/asetkey.c 2005-04-08 15:55:57.614279120 -0400 +@@ -81,7 +81,7 @@ + exit(1); + } + +- code = afsconf_AddKey(tdir, kvno, key->contents); ++ code = afsconf_AddKey(tdir, kvno, key->contents, 1); + if (code) { + printf("setkey: failed to set key, code %ld.\n", code); + exit(1); diff --git a/src/packaging/RedHat/afs-krb5-2.0-res_search.patch b/src/packaging/RedHat/afs-krb5-2.0-res_search.patch new file mode 100644 index 0000000000..fda5ba45b4 --- /dev/null +++ b/src/packaging/RedHat/afs-krb5-2.0-res_search.patch @@ -0,0 +1,14 @@ +--- afs-krb5/src/configure.in.res_search 2005-09-30 12:53:38.000000000 -0400 ++++ afs-krb5/src/configure.in 2005-09-30 14:40:38.000000000 -0400 +@@ -89,7 +89,10 @@ + if test "$have_res_search" != yes; then + AC_CHECK_LIB(${lib}, res_search, + [have_res_search=yes +- NETLIBS="$NETLIBS -l${lib}"]) ++ NETLIBS="$NETLIBS -l${lib}"], ++ [AC_CHECK_LIB(${lib}, __res_search, ++ [have_res_search=yes ++ NETLIBS="$NETLIBS -l${lib}"])]) + fi + done + fi diff --git a/src/packaging/RedHat/afsmodname b/src/packaging/RedHat/afsmodname deleted file mode 100755 index 227488acbb..0000000000 --- a/src/packaging/RedHat/afsmodname +++ /dev/null @@ -1,455 +0,0 @@ -#!/usr/bin/perl -# afsmodname - return the name of the AFS module to load -# usage: afsmodname [path] -# THIS SCRIPT IS UNDER SOURCE CONTROL! -# The master copy is /afs/cs/misc/openafs/src/client-support/afsmodname - -use Getopt::Std; - -use strict; -use vars qw($modbase $VERSION @TrySyms @AddSyms $Prefix); -use vars qw($DEBUG $Mode $OutFile %SymCache); - -$VERSION = '$Revision$'; -$VERSION =~ s/^\$[a-z]*:?\s*(\S*)\s*\$$/$1/i; -$VERSION = 'testing' unless $VERSION; -$modbase = '/usr/vice/etc/modload'; -@TrySyms = qw(__iget iget __iget4 iget4); -@AddSyms = qw(sock_create); -$Prefix = 'libafs'; - - -sub vcmp { - my (@a, @b, @aa, @bb); - my ($i, $ii); - - @a = split /-/, $a; - @b = split /-/, $b; - foreach $i (0 .. ((@a > @b) ? $#b : $#a)) { - @aa = split /\./, $a[$i]; - @bb = split /\./, $b[$i]; - foreach $ii (0 .. ((@aa > @bb) ? $#bb : $#aa)) { - return $aa[$ii] <=> $bb[$ii] if $aa[$ii] <=> $bb[$ii] - && $aa[$ii] =~ /^\d+$/ - && $bb[$ii] =~ /^\d+$/; - return $aa[$ii] cmp $bb[$ii] if $aa[$ii] cmp $bb[$ii]; - } - return @aa <=> @bb if @aa <=> @bb; - } - return @a <=> @b; -} - - -sub parse_symbol ($) { - my($symbol) = @_; - - if ($symbol =~ /^(.*)_R((?:smp)?(?:2gig)?_?[0-9a-f]{8})$/) { - ($1, $2); - } else { - ($symbol, '--none--'); - } -} - - -sub get_ksym ($) { - my($req_sym) = @_; - my($addr, $symbol, $module, $version, @answer); - - - if (exists($SymCache{$req_sym})) { - print STDERR "get_ksym($req_sym) [cached]\n" if $DEBUG > 1; - return $SymCache{$req_sym}; - } - - print STDERR "get_ksym($req_sym)" if $DEBUG; - $SymCache{$req_sym} = undef; - open(KSYMS, '/proc/ksyms') or die "open /proc/ksyms: $!\n"; - while () { - if (/^(\w+)\s+(\w+)\s+\[(.*)\]/) { - ($addr, $symbol, $module) = ($1, $2, $3) - } elsif (/^(\w+)\s+(\w+)/) { - ($addr, $symbol, $module) = ($1, $2, 'KERNEL') - } else { next } - - ($symbol, $version) = parse_symbol($symbol); - - if ($symbol eq $req_sym) { - $SymCache{$req_sym} = [$addr, $version, $module]; - print STDERR " => [addr=$addr, vers=$version, mod=$module]\n" if $DEBUG; - last; - } - } - close(KSYMS); - - print STDERR " => not found\n" if $DEBUG && !defined($SymCache{$req_sym}); - $SymCache{$req_sym}; -} - - -sub get_modsyms ($) { - my($modpath) = @_; - my($symbol, $version, $V); - - $V = {}; - open(NM, "nm $modpath|") or die "nm $modpath: $!\n"; - while () { - chomp; - next unless /^\s+U\s+/; - ($symbol, $version) = parse_symbol($'); - $$V{$symbol} = $version unless $version eq '--none--'; - } - close(NM); - $V; -} - - -sub get_hdrsyms ($) { - my($srcpath) = @_; - my($moddir, @hdrs, $h); - my($symbol, $version, $V); - - - $moddir = "$srcpath/include/linux/modules"; - opendir(HDRS, $moddir) or die "$moddir: $!\n"; - @hdrs = readdir(HDRS); - closedir(HDRS); - - $V = {}; - foreach $h (@hdrs) { - next unless $h =~ /\.ver$/; - open(HDR, "$moddir/$h") or die "$moddir/$h: $!\n"; - while () { - chomp; - next unless /#define __ver_(\S+)\s+(\S+)/; - $$V{$1} = $2; - } - close(HDR); - } - $V; -} - - -sub get_cputype () { - my($cputype, $family, $vendor, $model); - - open(CPUINFO, '/proc/cpuinfo') or die "open /proc/cpuinfo: $!\n"; - while () { - if (/^cpu\s*\:\s*(\S+)/) { $cputype = $1 } - elsif (/^cpu family\s*:\s*(\S+)/) { $family = $1 } - elsif (/^vendor_id\s*:\s*(\S+)/) { $vendor = $1 } - elsif (/^model\s*:\s*(\S+)/) { $model = $1 } - } - close(CPUINFO); - if ($vendor eq 'GenuineIntel') { $vendor = 'intel' } - elsif ($vendor eq 'AuthenticAMD') { $vendor = 'amd' } - $cputype = "${family}86" if !defined($cputype); - [$cputype, $vendor, $model]; -} - - -sub table_lookup ($@) { - my($cpu, @paths) = @_; - my($path, $symbol, $version, $mincpu, @mincpu, $module, $info, @supp); - my($prev_module); # last module line we saw - my($match_module); # last matching module - my($prev_match); # true if last module matches so far - - foreach $path (@paths) { - next unless -f $path; - $prev_match = 0; - open(TABLE, $path) or die "open $path: $!\n"; - while () { - # Skip comments - next if (/^\#/ || /^\s*$/); - - # Check supplemental requirements - if (/^\s*\>/) { - @supp = split; - foreach (@supp) { - if (/([^=]*)=([^=]*)/) { - ($symbol, $version) = ($1, $2); - $info = get_ksym($symbol); - $prev_match = 0 if !$info || $version ne $$info[1]; - } - } - next; - } - - # This is a new module, so all supplemental requirements for the - # previous module have been processed. If they all passed, then - # the previous module is a matching module. - $match_module = $prev_module if $prev_match; - - # Parse the line and remember the module name - ($symbol, $version, $mincpu, $module) = split; - $prev_module = $module; - $prev_match = 0; - if ($DEBUG) { - print STDERR "Try $module ($symbol=$version)", - ($mincpu ne '-') ? " mincpu = $mincpu" : "", - "\n"; - } - - # Check mincpu requirement - if ($mincpu ne '-') { - @mincpu = split(/\./, $mincpu); - if ($mincpu[0] ne '' && $mincpu[0] > $$cpu[0]) { # min family - print STDERR " mincpu failed: $mincpu[0] > $$cpu[0]\n" if $DEBUG; - next; - } - if ($mincpu[1] ne '' && $mincpu[1] ne $$cpu[1]) { # exact vendor - print STDERR " mincpu failed: $mincpu[1] != $$cpu[1]\n" if $DEBUG; - next; - } - if ($mincpu[2] ne '' && $mincpu[2] > $$cpu[2]) { # min model - print STDERR " mincpu failed: $mincpu[2] > $$cpu[2]\n" if $DEBUG; - next; - } - } - - # Check primary symbol requirement - $info = get_ksym($symbol); - next unless $info; - next unless $version eq $$info[1]; - - # OK; it's a match so far. There may still be some supplemental - # requirements that we need to check. - $prev_match = 1; - } - close(TABLE); - $match_module = $prev_module if $prev_match; - } - $match_module; -} - - -sub dump_versions ($) { - my($cpu) = @_; - my($version); - - print STDERR "CPU Type: ", join('.', @$cpu), "\n"; - - chomp($version = `uname -rv`); - print STDERR "Linux version: $version\n"; - - if (open(RHR, "/etc/redhat-release")) { - chomp($version = ); - print STDERR "RedHat release: $version\n"; - } -} - - -sub dump_syms (@) { - my(@syms) = @_; - my($sym, $info); - - print STDERR "Symbol versions:\n"; - foreach $sym (@syms) { - $info = get_ksym($sym); - printf STDERR " %-10s %s\n", $sym, $$info[1] if $info; - } -} - - -sub gen_table (@) { - my(@modules) = @_; - my($module, $modname, $V, $sym, $count, @add); - - print <<'EOF'; -# This file describes the available AFS kernel modules and what kernel -# versions they work with. Each line matches against some kernel symbol -# version, and specifies a module which may be used with kernels containing -# that version of the specified symbol. Only lines which match the -# currently-running kernel are considered. -# -# In addition, each line may specify a minimum CPU model on which the module -# will work. If this value is present, the actual CPU model must be greater -# than or equal to the version specified; otherwise, the module is assumed -# to work on any CPU. -# -# The last match found will be used. -# -# Symbol Version MinCPU Module -#======= ============ ====== ==================== -EOF - foreach $module (sort vcmp @modules) { - ($modname = $module) =~ s/.*\///; - $modname =~ s/^$Prefix[-.](.*)\.o$/$1/; - $V = get_modsyms($module); - $count = 0; - foreach $sym (@TrySyms) { - next unless exists $$V{$sym}; - $count++; - printf "%-8s %-12s %-6s %s\n", $sym, $$V{$sym}, '-', $modname; - last; - } - if (!$count) { - print STDERR "Unable to find a suitable symbol reference in $modname!\n"; - next; - } - @add = (); - foreach $sym (@AddSyms) { - next unless exists $$V{$sym}; - push(@add, "$sym=$$V{$sym}"); - } - print "> ", join(' ', @add), "\n" if @add; - } -} - - -sub scan_kernels (@) { - my(@kernels) = @_; - my($kernel, $kpath, $kname, $V); - -eval <<"EOF"; -format = -@<<<<<<<<<<<<<<<<<<<<<<<< @{[' @<<<<<<<<<<<' x scalar(@TrySyms)]} -\$kname, @{[join(',', map(q/$$V{'/ . $_ . q/'}/, @TrySyms))]} -. -EOF - - $kname = 'Kernel'; - $V = { map(($_ => $_), @TrySyms) }; - write; - - $kname = '========================='; - $V = { map(($_ => '============'), @TrySyms) }; - write; - - foreach $kernel (@kernels) { - if (-d "$kernel/src/include/linux/modules") { $kpath = "$kernel/src" } - elsif (-d "$kernel/include/linux/modules") { $kpath = $kernel } - else { next } - ($kname = $kpath) =~ s#/src$##; - $kname =~ s/.*\///; - - $V = get_hdrsyms($kpath); - write; - } -} - - -sub symcompare ($$) { - my($module, $kernel) = @_; - my($ksyms, $msyms, $sym, $kvers, $mvers, $info); - -eval <<'EOF'; -format = -@<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<< @<<<<<<<<<<< -$sym, $kvers, $mvers -. -EOF - - if (defined($kernel)) { $ksyms = get_hdrsyms($kernel) } - $msyms = get_modsyms($module); - - print "Symbol Kernel Module\n"; - print "============================== ============ ============\n"; - foreach (keys %$msyms) { - $sym = $_; - $mvers = $$msyms{$sym}; - if (defined($kernel)) { - $kvers = $$ksyms{$sym}; - } else { - $info = get_ksym($sym); - $kvers = $$info[1]; - } - next if $kvers eq $mvers; - write; - } -} - - -sub usage (;@) { - - print STDERR "$00: ", @_, "\n" if @_; - print STDERR <<"EOF"; -usage: $00 [opts] [modbase] (find module) - $00 [opts] -g modules ... (make table) - $00 [opts] -k kernels ... (scan kernels) - $00 [opts] -c module [kernel] (check module) - $00 -h (print help) - $00 -v (print version) - -options: - -d enable debugging output - -f outfile set output file (default stdout) - -P prefix set module name prefix (default $Prefix) - -S syms... symbols to try for -x, -k (default @TrySyms) - -A syms... additional symbols to check for -x (default @AddSyms) - - Module lists for -S and -A may be space- or comma-separated. - For backward-compatibility, -g is a synonym for -x. -EOF - exit(0); -} - -sub parse_opts () { - my(%opts); - - ($00 = $0) =~ s/.*\///; - getopts('dckgxf:hvP:S:A:', \%opts) or usage('invalid option(s)'); - usage() if $opts{'h'}; - - if ($opts{'v'}) { - print "afsmodname $VERSION\n"; - exit(0); - } - - $opts{'g'} = 1 if $opts{'x'}; - if ($opts{'g'} + $opts{'k'} + $opts{'c'} > 1) { - usage("At most one of -g, -k, -c can be used\n"); - } - - $DEBUG++ if exists $opts{'d'}; - $Mode = 'g' if exists $opts{'g'}; - $Mode = 'k' if exists $opts{'k'}; - $Mode = 'c' if exists $opts{'c'}; - - usage("Too many arguments") if !$Mode && @ARGV > 1; - usage("Too many arguments") if $Mode eq 'c' && @ARGV > 2; - usage("Module name required") if $Mode eq 'c' && !@ARGV; - - $OutFile = $opts{'f'} if exists $opts{'f'}; - $Prefix = $opts{'p'} if exists $opts{'P'}; - @TrySyms = split(/[, ]+/, $opts{'S'}) if exists $opts{'S'}; - @AddSyms = split(/[, ]+/, $opts{'A'}) if exists $opts{'A'}; -} - - -## MAIN PROGRAM - -my($cpu, $module); - -parse_opts(); -if ($Mode) { - if ($OutFile) { - open(STDOUT, ">$OutFile") or die "$OutFile: $!\n"; - } - if ($Mode eq 'g') { gen_table(@ARGV) } - if ($Mode eq 'k') { scan_kernels(@ARGV) } - if ($Mode eq 'c') { symcompare($ARGV[0], $ARGV[1]) } - exit(0); -} - -$modbase = $ARGV[0] if @ARGV; - -$cpu = get_cputype(); - -$module = table_lookup($cpu, "$modbase/SymTable", "$modbase/SymTable.local"); - -if ($module) { - print "$Prefix-$module.o"; - exit(0); -} - -print STDERR <<'EOF'; -Hmm... I can't seem to find an AFS kernel module suitable for your Linux -kernel. That means you will need to build or obtain a suitable module. -The following information may be of some use in obtaining assistance: -EOF - -dump_versions($cpu); -dump_syms(sort (@TrySyms, keys %SymCache)); - -exit(1); diff --git a/src/packaging/RedHat/openafs-1.2.6-rc.patch b/src/packaging/RedHat/openafs-1.2.6-rc.patch deleted file mode 100644 index 6ed144a40a..0000000000 --- a/src/packaging/RedHat/openafs-1.2.6-rc.patch +++ /dev/null @@ -1,27 +0,0 @@ -Index: src/afsd/afs.rc.linux -=================================================================== -RCS file: /cvs/openafs/src/afsd/afs.rc.linux,v -retrieving revision 1.4 -diff -u -r1.4 afs.rc.linux ---- src/afsd/afs.rc.linux 2001/10/10 03:16:54 1.4 -+++ src/afsd/afs.rc.linux 2001/10/13 14:42:31 -@@ -92,6 +92,19 @@ - # LIBAFS manually. - choose_client() { - -+ # Use the associated script to determine the module name -+ if test -f /usr/vice/etc/afsmodname && \ -+ test -f /usr/vice/etc/modload/SymTable ; then -+ -+ LIBAFS=`/usr/vice/etc/afsmodname` -+ if test "x$LIBAFS" = "x" ; then -+ echo Did not find matching module in SymTable -+ else -+ echo Found $LIBAFS from SymTable... Loading... -+ return 0 -+ fi -+ fi -+ - # Use the second field of the uname -v output instead of just - # doing a match on the whole thing to protect against matching - # a timezone named SMP -- I don't know of one, but let's be diff --git a/src/packaging/RedHat/openafs-1.2.6.spec b/src/packaging/RedHat/openafs-1.2.6.spec deleted file mode 100644 index aaad118d45..0000000000 --- a/src/packaging/RedHat/openafs-1.2.6.spec +++ /dev/null @@ -1,762 +0,0 @@ -%define afsvers 1.2.6 -%define pkgrel 1 - -# Define your particular Red Hat and kernel versions: -# For Linux 2.2: 22 -# For Linux 2.4: 24 -# -%define osvers rh7.1 -%define kernvers 24 - -# This is where to look for kernel-build includes files. -# Most likely you don't want to change this, but -# depending on your situation you may want: -# Linux 2.2: -# kbase = /usr/src/linux- -# kend = "" -# Linux 2.4: -# kbase = /lib/modules/ -# kend = /build -# -%define kbase /usr/src/linux- -%define kend "" - -# Set 'debugspec' to 1 if you want to debug the spec file. This will -# not remove the installed tree as part of the %clean operation -%define debugspec 0 - -# Set 'enterprisekernelsupport' to 1 if you want to build the -# kernel module for the enterprise kernel -# Note: This will only work for kernvers == 24 on i686 -%define enterprisekernelsupport 1 - -# Set 'bigmemkernelsupport' to 1 if you want to build the -# kernel module for the bigmem kernel -# Note: This will only work for kernvers == 24 on i686 -%define bigmemkernelsupport 1 - -# Set 'krb5support' to 1 if you want to build the openafs-krb5 package -# to distribute aklog and asetkey -%define krb5support 1 - -# OpenAFS configuration options -%define enable_bitmap_later 0 -%define enable_bos_restricted_mode 0 -%define enable_fast_restart 0 - -####################################################################### -# You probably don't need to change anything beyond this line -# NOTE: If you do, please email me!!! - -Summary: OpenAFS distributed filesystem -Name: openafs -Version: %{afsvers} -Release: %{osvers}.%{pkgrel} -Copyright: IPL -BuildRoot: %{_tmppath}/%{name}-%{version}-root -Packager: Derek Atkins -Group: Networking/Filesystems -BuildRequires: kernel-source -%if "%{osvers}" != "rh6.2" -# Newer versions of Red Hat require pam-devel in order to build -BuildRequires: pam-devel -%endif - -Source0: http://www.openafs.org/dl/openafs/${afsvers}/openafs-%{afsvers}-src.tar.gz -Source1: http://www.openafs.org/dl/openafs/${afsvers}/openafs-%{afsvers}-doc.tar.gz -Source2: openafs-ThisCell -# http://grand.central.org/dl/cellservdb/CellServDB -Source3: openafs-CellServDB -Source4: openafs-SuidCells -Source5: openafs-cacheinfo -Source6: openafs-afsmodname -Source7: openafs-LICENSE.Sun -Source8: openafs-README -Source10: http://www.openafs.org/dl/openafs/${afsvers}/RELNOTES-%{afsvers} -Source11: http://www.openafs.org/dl/openafs/${afsvers}/ChangeLog - -Source20: openafs-krb5-1.3.tar.gz - -Patch0: openafs-%{afsvers}-rc.patch - -Patch20: openafs-krb5-1.3-1.2.1.diff.gz -Patch21: openafs-krb5-1.3-configure.patch - -%description -The AFS distributed filesystem. AFS is a distributed filesystem -allowing cross-platform sharing of files among multiple computers. -Facilities are provided for access control, authentication, backup and -administrative management. - -This package provides common files shared across all the various -OpenAFS packages but are not necessarily tied to a client or server. - -%package client -Requires: binutils, openafs-kernel, openafs = %{PACKAGE_VERSION} -Summary: OpenAFS Filesystem Client -Group: Networking/Filesystem - -%description client -The AFS distributed filesystem. AFS is a distributed filesystem -allowing cross-platform sharing of files among multiple computers. -Facilities are provided for access control, authentication, backup and -administrative management. - -This package provides basic client support to mount and manipulate -AFS. - -%package server -Requires: openafs-kernel, openafs = %{PACKAGE_VERSION} -Summary: OpenAFS Filesystem Server -Group: Networking/Filesystems - -%description server -The AFS distributed filesystem. AFS is a distributed filesystem -allowing cross-platform sharing of files among multiple computers. -Facilities are provided for access control, authentication, backup and -administrative management. - -This package provides basic server support to host files in an AFS -Cell. - -%package devel -Summary: OpenAFS Development Libraries and Headers -Group: Development/Filesystems - -%description devel -The AFS distributed filesystem. AFS is a distributed filesystem -allowing cross-platform sharing of files among multiple computers. -Facilities are provided for access control, authentication, backup and -administrative management. - -This package provides static development libraries and headers needed -to compile AFS applications. Note: AFS currently does not provide -shared libraries. - -%package kernel -Summary: OpenAFS Kernel Module(s) -Requires: openafs = %{PACKAGE_VERSION} -Group: Networking/Filesystems - -%description kernel -The AFS distributed filesystem. AFS is a distributed filesystem -allowing cross-platform sharing of files among multiple computers. -Facilities are provided for access control, authentication, backup and -administrative management. - -This package provides precompiled AFS kernel modules for various -kernels. - -%package kernel-source -Summary: OpenAFS Kernel Module source tree -Group: Networking/Filesystems - -%description kernel-source -The AFS distributed filesystem. AFS is a distributed filesystem -allowing cross-platform sharing of files among multiple computers. -Facilities are provided for access control, authentication, backup and -administrative management. - -This package provides the source code to build your own AFS kernel -module. - -%package compat -Summary: OpenAFS client compatibility symlinks -Requires: openafs = %{PACKAGE_VERSION}, openafs-client = %{PACKAGE_VERSION} -Group: Networking/Filesystems -Obsoletes: openafs-client-compat - -%description compat -The AFS distributed filesystem. AFS is a distributed filesystem -allowing cross-platform sharing of files among multiple computers. -Facilities are provided for access control, authentication, backup and -administrative management. - -This package provides compatibility symlinks in /usr/afsws. It is -completely optional, and is only necessary to support legacy -applications and scripts that hard-code the location of AFS client -programs. - -%package kpasswd -Summary: OpenAFS KA kpasswd support -Requires: openafs -Group: Networking/Filesystems - -%description kpasswd -The AFS distributed filesystem. AFS is a distributed filesystem -allowing cross-platform sharing of files among multiple computers. -Facilities are provided for access control, authentication, backup and -administrative management. - -This package provides the compatibility symlink for kpasswd, in case -you are using KAserver instead of Krb5. - -%if %{krb5support} -%package krb5 -Summary: OpenAFS programs to use with krb5 -Requires: openafs = %{PACKAGE_VERSION} -Group: Networking/Filesystems -BuildRequires: krb5-devel - -%description krb5 -The AFS distributed filesystem. AFS is a distributed filesystem -allowing cross-platform sharing of files among multiple computers. -Facilities are provided for access control, authentication, backup and -administrative management. - -This package provides compatibility programs so you can use krb5 -to authenticate to AFS services, instead of using AFS's homegrown -krb4 lookalike services. -%endif - -# -# PREP -# - -%prep -%setup -q -b 1 -%setup -q -T -D -a 20 - -%patch0 -p0 -%patch20 -p0 -%patch21 -p0 - -### -### build -### -%build - -%ifarch i386 i486 i586 i686 athlon -sysbase=i386 -sysname=${sysbase}_linux%{kernvers} -%else -sysbase=%{_arch} -sysname=${sysbase}_linux%{kernvers} -%endif - -if [ %{kernvers} = 22 ]; then - kv='2\.2\.' -elif [ %{kernvers} = 24 ]; then - kv='2\.4\.' -else - echo "I don't know how to build $sysname" - exit 1 -fi - -%ifarch i386 i486 i586 i686 athlon -archlist="i386 i586 i686 athlon" -%else -archlist=${sysbase} -%endif - -# -# PrintDefine var value statements file -# -PrintDefine() { - case $3 in - *ifn*) - echo "#ifndef $1" >> $4 - ;; - esac - case $3 in - *und*) - echo "#undef $1" >> $4 - ;; - esac - case $3 in - *def*) - echo "#define $1 $2" >> $4 - ;; - esac - case $3 in - *end*) - echo "#endif" >> $4 - ;; - esac - case $3 in - *inc*) - echo "#include $1" >> $4 - ;; - esac - - - case $3 in - *nl*) - echo "" >> $4 - ;; - esac -} - -# PrintRedhatKernelFix arch mp file -PrintRedhatKernelFix() { - arch="$1" - up=0 - smp=0 - ent=0 - bm=0 - if [ "$2" = "MP" ]; then - smp=1 - elif [ "$2" = "EP" ]; then - ent=1 - elif [ "$2" = "BM" ]; then - bm=1 - else - up=1 - fi - file="$3" - - # deal with the various boot kernels - boot=0 - bootsmp=0 - - # arch of 'BOOT' == 386 - if [ "$arch" = "BOOT" ]; then - if [ "$up" = 1 ]; then - boot=1 - up=0 - elif [ "$smp" = 1 ]; then - bootsmp=1 - smp=0 - fi - arch=i386 - fi - - rm -f $file - touch $file - - PrintDefine "REDHAT_FIX_H" "" ifn,def,nl $file - - PrintDefine "__BOOT_KERNEL_ENTERPRISE" $ent und,def,nl $file - PrintDefine "__BOOT_KERNEL_BIGMEM" $bm und,def,nl $file - PrintDefine "__BOOT_KERNEL_SMP" $smp und,def,nl $file - PrintDefine "__BOOT_KERNEL_UP" $up und,def,nl $file - PrintDefine "__BOOT_KERNEL_BOOT" $boot und,def,nl $file - PrintDefine "__BOOT_KERNEL_BOOTSMP" $bootsmp und,def,nl $file - - PrintDefine \"/boot/kernel.h\" "" inc,nl $file # include file - - for ar in $archlist ; do - if [ "$ar" = "$arch" ]; then - PrintDefine "__MODULE_KERNEL_$ar" "1" ifn,def,end $file - else - PrintDefine "__MODULE_KERNEL_$ar" "" und $file # undef - fi - done - echo "" >> $file - - PrintDefine "" "" end $file - - if [ %{debugspec} = 1 ] ; then - echo "Kernel Configuration File for Red Hat kernels:" - cat $file - fi -} - -# Pick up all the 'appropriate' kernels -kvers=`ls -d %{kbase}* | sed 's^%{kbase}^^g' | grep $kv` - -# Choose the last one for now.. It doesn't really matter, really. -hdrdir=`ls -d %{kbase}*%{kend} | grep $kv | tail -1` - -config_opts="--enable-redhat-buildsys \ -%if %{enable_bitmap_later} - --enable-bitmap-later \ -%endif -%if %{enable_bos_restricted_mode} - --enable-bos-restricted-mode \ -%endif -%if %{enable_fast_restart} - --enable-fast-restart \ -%endif - --enable-transarc-paths" - -# Configure AFS -./configure --with-afs-sysname=${sysname} \ - --with-linux-kernel-headers=$hdrdir $config_opts - -# Build the user-space AFS stuff -make dest_nolibafs - -# Build the libafs tree -make only_libafs_tree - -# Now build all the kernel modules -for vers in $kvers ; do - - # Reconfigure sources for this kernel version, to catch various - # kernel params in the configure script. Yes. this takes more time, - # but it's worth it in the long run.. But first remove config.cache - # to be sure we get a clean configuration. - rm -f config.cache - ./configure --with-afs-sysname=${sysname} \ - --with-linux-kernel-headers=%{kbase}$vers%{kend} \ - $config_opts - - KTL="SP MP" -%if %{enterprisekernelsupport} - # See if we should build EP support - if grep -q -r __BOOT_KERNEL_ENTERPRISE %{kbase}$vers%{kend}/include - then - KTL="${KTL} EP" - fi -%endif -%if %{bigmemkernelsupport} - # See if we should build BM support - if grep -q -r __BOOT_KERNEL_BIGMEM %{kbase}$vers%{kend}/include - then - KTL="${KTL} BM" - fi -%endif - - for mp in $KTL; do - # ... for all appropriate 'architectures'... - if [ %{kernvers} = 22 ]; then - # For 2.2 kernels, just do MP and SP kernels; force EP into i686 - - arch=${sysbase} - if [ $mp = EP -a ${sysbase} = i386 ]; then - arch=i686 - fi - - PrintRedhatKernelFix $arch $mp src/config/redhat-fix.h - make dest_only_libafs LOCAL_SMP_DEF=-DREDHAT_FIX MPS=$mp - - elif [ %{kernvers} = 24 ]; then - # For 2.4 kernels, need to build modules for each architecture! - - for arch in $archlist ; do - - # build SP and MP on all architectures. - # build EP and BM only on i686 - if [ $mp = SP -o $mp = MP -o \ - \( $mp = EP -a $arch = i686 \) -o \ - \( $mp = BM -a $arch = i686 \) ]; then - PrintRedhatKernelFix $arch $mp src/config/redhat-fix.h - make dest_only_libafs LOCAL_SMP_DEF=-DREDHAT_FIX \ - LINUX_MODULE_NAME="-$arch" MPS=$mp - fi - done - - else - echo "I don't know how to build $sysname" - exit 1 - fi - done -done - -rm -f src/config/redhat-fix.h - -%if %{krb5support} -# Now build aklog/asetkey -(cd openafs-krb5-1.3/src && - autoconf && - ./configure --prefix=/usr --with-krb5=/usr/kerberos \ - --with-afs=`pwd`/../../${sysname}/dest/ && \ - make all && \ - make install DESTDIR=`pwd`/../../${sysname}/dest/ INSTALL_BIN=/bin \ - INSTALL_SBIN=/etc) -%endif - -### -### install -### -%install -[ $RPM_BUILD_ROOT != / ] && rm -rf $RPM_BUILD_ROOT - -%ifarch i386 i486 i586 i686 athlon -sysbase=i386 -sysname=${sysbase}_linux%{kernvers} -%else -sysbase=%{_arch} -sysname=${sysbase}_linux%{kernvers} -%endif - -# Build install tree -mkdir -p $RPM_BUILD_ROOT/usr/sbin -mkdir -p $RPM_BUILD_ROOT/etc/sysconfig -mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d -mkdir -p $RPM_BUILD_ROOT/etc/openafs -mkdir -p $RPM_BUILD_ROOT/lib/security -mkdir -p $RPM_BUILD_ROOT/usr/afs/logs -mkdir -p $RPM_BUILD_ROOT/usr/vice/etc -mkdir -p $RPM_BUILD_ROOT/usr/vice/cache -chmod 700 $RPM_BUILD_ROOT/usr/vice/cache - -# Copy files from dest to the appropriate places in BuildRoot -tar cf - -C ${sysname}/dest bin include lib | tar xf - -C $RPM_BUILD_ROOT/usr -tar cf - -C ${sysname}/dest/etc . | tar xf - -C $RPM_BUILD_ROOT/usr/sbin -tar cf - -C ${sysname}/dest/root.server/usr/afs bin | tar xf - -C $RPM_BUILD_ROOT/usr/afs -tar cf - -C ${sysname}/dest/root.client/usr/vice/etc afsd modload | tar xf - -C $RPM_BUILD_ROOT/usr/vice/etc - -# Link kpasswd to kapasswd -ln -f $RPM_BUILD_ROOT/usr/bin/kpasswd $RPM_BUILD_ROOT/usr/bin/kapasswd - -# Copy root.client config files -install -m 755 ${sysname}/dest/root.client/usr/vice/etc/afs.conf $RPM_BUILD_ROOT/etc/sysconfig/afs -install -m 755 ${sysname}/dest/root.client/usr/vice/etc/afs.rc $RPM_BUILD_ROOT/etc/rc.d/init.d/afs - -# Copy PAM modules -install -m 755 ${sysname}/dest/lib/pam* $RPM_BUILD_ROOT/lib/security - -# PAM symlinks -ln -sf pam_afs.so.1 $RPM_BUILD_ROOT/lib/security/pam_afs.so -ln -sf pam_afs.krb.so.1 $RPM_BUILD_ROOT/lib/security/pam_afs.krb.so - -# Populate /usr/vice/etc -uve=$RPM_BUILD_ROOT/usr/vice/etc -install -p -m 644 $RPM_SOURCE_DIR/openafs-CellServDB $uve/CellServDB -install -p -m 644 $RPM_SOURCE_DIR/openafs-SuidCells $uve/SuidCells -install -p -m 644 $RPM_SOURCE_DIR/openafs-ThisCell $uve/ThisCell -install -p -m 644 $RPM_SOURCE_DIR/openafs-cacheinfo $uve/cacheinfo -install -p -m 755 $RPM_SOURCE_DIR/openafs-afsmodname $uve/afsmodname - -# -# Build the SymTable -symtable=$RPM_BUILD_ROOT/usr/vice/etc/modload/SymTable -rm -f $symtable -echo "# SymTable, automatically generated" > $symtable -echo "# symbol version cpu module" >> $symtable -echo "" >> $symtable - -$RPM_BUILD_ROOT/usr/vice/etc/afsmodname -x -f $symtable \ - $RPM_BUILD_ROOT/usr/vice/etc/modload/libafs*.o - -# -# install kernel-source -# - -# Install the kernel module source tree -mkdir -p $RPM_BUILD_ROOT/usr/src/openafs-kernel-%{afsvers}/src -tar cf - -C libafs_tree . | \ - tar xf - -C $RPM_BUILD_ROOT/usr/src/openafs-kernel-%{afsvers}/src - -# Next, copy the LICENSE Files, README -install -m 644 src/LICENSE $RPM_BUILD_ROOT/usr/src/openafs-kernel-%{afsvers}/LICENSE.IBM -install -m 644 $RPM_SOURCE_DIR/openafs-LICENSE.Sun $RPM_BUILD_ROOT/usr/src/openafs-kernel-%{afsvers}/LICENSE.Sun -install -m 644 $RPM_SOURCE_DIR/openafs-README $RPM_BUILD_ROOT/usr/src/openafs-kernel-%{afsvers}/README - -# -# Install DOCUMENTATION -# - -# Build the DOC directory -mkdir -p $RPM_BUILD_ROOT/$RPM_DOC_DIR/openafs-%{afsvers} -tar cf - -C doc LICENSE html pdf | \ - tar xf - -C $RPM_BUILD_ROOT/$RPM_DOC_DIR/openafs-%{afsvers} -install -m 644 $RPM_SOURCE_DIR/RELNOTES-%{afsvers} $RPM_BUILD_ROOT/$RPM_DOC_DIR/openafs-%{afsvers} -install -m 644 $RPM_SOURCE_DIR/ChangeLog $RPM_BUILD_ROOT/$RPM_DOC_DIR/openafs-%{afsvers} - -# -# create filelist -# -grep -v "^#" >openafs-file-list < +# +# $Revision$ +# + +# Define where the Specfile is located. +specdir=/usr/src/redhat/SPECS + +# Define the rpmbuild options you want to supply. +buildopts= + +############################################################################ +# Figure out the release version +rhrel=`cat /etc/redhat-release` +if [ `echo $rhrel | grep -c 'Fedora Core'` = 1 ] ; then + ostype='fc' +elif [ `echo $rhrel | grep -c 'Red Hat Enterprise Linux'` = 1 ] ; then + ostype='rhel' + excludearch=i586 +elif [ `echo $rhrel | grep -c 'Red Hat Linux'` = 1 ] ; then + ostype='rh' +else + echo "Unknown Linux Release: $rhrel" + exit 1 +fi +osrel=`echo $rhrel | sed -e 's/^.*release \([^ ]*\).*$/\1/' -e 's/\.//g'` +osvers="$ostype$osrel" + +############################################################################ +# Now figure out the kernel version. We assume that the running +# kernel version is "close enough" to tell us whether it's a +# 2.4 or 2.6 kernel. +kvers=`uname -r` +case $kvers in + 2.4.*) + kbase=/usr/src/linux- + kv=2.4. + ;; + 2.6.*) + kbase=/usr/src/kernels/ + kv=2.6. + ;; + *) + echo "I don't know how to build for kernel $kvers" + exit 1 + ;; +esac + +############################################################################ +# Now build the packages and all the kernel modules + +echo "Building OpenAFS for $osvers" +rpmbuild -ba $buildopts --define "osvers $osvers" $specdir/openafs.spec || \ + exit 1 + +kernels=`ls -d ${kbase}${kv}*` + +for kerndir in $kernels ; do + # Ignore symlinks + if [ ! -h $kerndir ] ; then + vers=`echo $kerndir | sed -e "s^${kbase}^^g" -e 's/-smp/smp/g' \ + -e 's/-hugemem/hugemem/g' -e 's/-largesmp/largesmp/g'` + if [ $kv = "2.4." ] ; then + kvers=$vers + case `uname -m` in + i386|i486|i586|i686|athlon) archlist="i586 i686 athlon" ;; + *) archlist=`uname -m` ;; + esac + for a in $excludearch ; do + archlist=`echo $archlist | sed -e s/$a//` + done + kend="''" + else + karch=`echo $vers | sed 's/.*-//'` + kvers=`echo $vers | sed s/-$karch//` + archlist=$karch + kend=-$karch + fi + + for arch in $archlist ; do + echo "Building for $kerndir, $kvers, $arch" + rpmbuild -bb $buildopts \ + --define "osvers $osvers" \ + --define "kernvers $kvers" \ + --define "ksrcdir $kerndir" \ + --define "build_modules 1" \ + --target=$arch \ + $specdir/openafs.spec || exit 1 + done + fi +done diff --git a/src/packaging/RedHat/openafs-client.init b/src/packaging/RedHat/openafs-client.init new file mode 100644 index 0000000000..1bfeb9d833 --- /dev/null +++ b/src/packaging/RedHat/openafs-client.init @@ -0,0 +1,83 @@ +#!/bin/bash +# +# openafs-client Start/Stop the OpenAFS Client +# +# chkconfig: 2345 50 50 +# description: OpenAFS is a distributed filesystem. +# +# $Revision$ + +. /etc/init.d/functions +[ -f /etc/sysconfig/openafs ] && . /etc/sysconfig/openafs + + +start() { + echo -n $"Starting openafs-client: " + if [ -e /var/lock/subsys/openafs-client ] ; then + echo -n $"cannot start openafs-client: already running" + failure $"cannot start openafs-client: already running" + echo + return 1 + fi + modprobe openafs + RETVAL=$? + if [ $RETVAL -ne 0 ] ; then + echo -n $"failed to load openafs kernel module." + failure $"failed to load openafs kernel module." + echo + return $RETVAL + fi + /usr/vice/etc/afsd $AFSD_ARGS + RETVAL=$? + echo + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/openafs-client + return $RETVAL +} + +stop() { + echo -n $"Stopping openafs-client: " + if [ ! -e /var/lock/subsys/openafs-client ] ; then + echo -n $"cannot stop openafs-client: not running" + failure $"cannot stop openafs-client: not running" + echo + return 1 + fi + umount /afs + RETVAL=$? + echo + if [ $RETVAL -eq 0 ] ; then + rm -f /var/lock/subsys/openafs-client + rmmod openafs + fi + return $RETVAL +} + +rhstatus() { + status afsd +} + +restart() { + stop || exit + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + restart + ;; + status) + rhstatus + ;; + condrestart) + [ -f /var/lock/subsys/openafs-client ] && restart || : + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart}" + exit 1 +esac diff --git a/src/packaging/RedHat/openafs-kernel-version.sh b/src/packaging/RedHat/openafs-kernel-version.sh new file mode 100755 index 0000000000..d3a0e490ef --- /dev/null +++ b/src/packaging/RedHat/openafs-kernel-version.sh @@ -0,0 +1,49 @@ +#!/bin/sh +# +# investigate the name of the kernel +# +# $Revision$ + +if [ "x$1" = "x" ] ; then + kernvers=`uname -r` + if [ ! -d /lib/modules/$kernvers/build/include ] ; then + kernvers=`/bin/ls /lib/modules/*/build/include/linux/version.h | \ + cut -d/ -f4 | \ + sort -u | \ + tail -1` + fi +else + kernvers=$1 +fi + +if [ -z "$kernvers" ]; then echo "unable to determine kernel version" >&2; exit 1; fi + +# strip "kernel-" off of the front +if expr "$kernvers" : "kernel-" >&/dev/null +then + kernvers=`expr "$kernvers" : 'kernel-\(.*\)'` +fi + +# Strip kernel config mnemonic off 2.4 kernels. +case $kernvers in + 2.4.*) + # strip kernel config mnemonic off of the tail + case "$kernvers" in + *smp) + kernvers=`expr "$kernvers" : '\(.*\)smp'` + ;; + *bigmem) + kernvers=`expr "$kernvers" : '\(.*\)bigmem'` + ;; + *hugemem) + kernvers=`expr "$kernvers" : '\(.*\)hugemem'` + ;; + *enterprise) + kernvers=`expr "$kernvers" : '\(.*\)enterprise'` + ;; + esac + ;; +esac + +echo $kernvers +exit 0 diff --git a/src/packaging/RedHat/openafs-krb5-2.0.tar.gz b/src/packaging/RedHat/openafs-krb5-2.0.tar.gz new file mode 100644 index 0000000000..f6b915c477 Binary files /dev/null and b/src/packaging/RedHat/openafs-krb5-2.0.tar.gz differ diff --git a/src/packaging/RedHat/openafs-kvers-is.sh b/src/packaging/RedHat/openafs-kvers-is.sh new file mode 100755 index 0000000000..b69f8dfb6a --- /dev/null +++ b/src/packaging/RedHat/openafs-kvers-is.sh @@ -0,0 +1,43 @@ +#!/bin/sh +# Small helper script for parsing kernel versions and types +# $Revision$ + +if [ "$1" = "parsev" ] ; then + #logger "parsing version from $2" + echo "$2" | /bin/sed -e 's/^\([0-9]*\.[0-9]*\)\..*/\1/' + exit 0 +fi + +if [ "$1" = "parset" ] ; then + #logger "parsing type from $2" + echo "$2" | /bin/sed -e 's/^.*[0-9L]\([^0-9L]*\)/\1/' + exit 0 +fi + +if [ "$1" = "kvers" ] ; then + #logger "parsing type from $2" + echo "$2" | /bin/sed -e 's/^\(.*[0-9L]\)[^0-9L]*$/\1/' + exit 0 +fi + +if [ "$1" = "find" ] ; then + f=`find "$2"/configs -name \*-"$3"-"$4".config` + if [ -n "$f" ] ; then + echo 1 + exit 1 + else + echo 0 + exit 0 + fi +fi + +#logger "comparing $1 to $2" +if [ "$1" = "$2" ] ; then + #logger "yes" + echo 1 + exit 1 +else + #logger "no" + echo 0 + exit 0 +fi diff --git a/src/packaging/RedHat/openafs-makesrc.sh b/src/packaging/RedHat/openafs-makesrc.sh new file mode 100755 index 0000000000..479952f2d0 --- /dev/null +++ b/src/packaging/RedHat/openafs-makesrc.sh @@ -0,0 +1,34 @@ +#!/bin/sh +# +# openafs-makesrc -- convert a 2.6 'kernel' package into something +# you can install into /usr/src/kernels +# +# Written by: Derek Atkins +# +# $Revision$ + +kerndir=/usr/src/kernels + +[ -d $kerndir ] || mkdir -p -m 0755 $kerndir +umask 022 +while [ -n "$1" ] ; do + rpm=$1 + name=`rpm -qp $rpm` + vers=`echo $name | sed -e 's/kernel-[^0-9]*\([0-9].*\)$/\1/'` + smp=`echo $name | sed -e 's/kernel-\([^0-9]*\)[0-9].*$/\1/' -e s/-//` + arch=`echo $rpm | sed 's/.*\.\([^\.]*\)\.rpm$/\1/'` + + kd=$kerndir/$vers$smp-$arch + if [ ! -d $kd ] ; then + echo "converting `basename $rpm` to $kd" + rpm2cpio $rpm | ( cd $kerndir ; cpio --quiet -imd \*lib/modules/\*/build/\* ) + mv $kerndir/lib/modules/*/build $kd + chmod 755 $kd + rmdir $kerndir/lib/modules/* + rmdir $kerndir/lib/modules + rmdir $kerndir/lib + else + echo "$kd already exists. Ignoring." + fi + shift +done diff --git a/src/packaging/RedHat/openafs-server.init b/src/packaging/RedHat/openafs-server.init new file mode 100644 index 0000000000..2f63f8e9f8 --- /dev/null +++ b/src/packaging/RedHat/openafs-server.init @@ -0,0 +1,80 @@ +#!/bin/bash +# +# openafs-server Start/Stop the OpenAFS Server +# +# chkconfig: 2345 49 51 +# description: OpenAFS is a distributed filesystem. +# +# $Revision$ + +. /etc/init.d/functions +[ -f /etc/sysconfig/openafs ] && . /etc/sysconfig/openafs + + +start() { + echo -n $"Starting openafs-server: " + if [ -e /var/lock/subsys/openafs-server ] ; then + echo -n $"cannot start openafs-server: already running" + failure $"cannot start openafs-server: already running" + echo + return 1 + fi + /usr/afs/bin/bosserver $BOSSERVER_ARGS + RETVAL=$? + echo + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/openafs-server + return $RETVAL +} + +stop() { + echo -n $"Stopping openafs-server: " + if [ ! -e /var/lock/subsys/openafs-server ] ; then + echo -n $"cannot stop openafs-server: not running" + failure $"cannot stop openafs-server: not running" + echo + return 1 + fi + /usr/bin/bos shutdown localhost -wait -localauth + RETVAL=$? + if [ $RETVAL -ne 0 ] ; then + echo -n $"failed to shutdown OpenAFS" + failure $"failed to shutdown OpenAFS" + echo + return $RETVAL + fi + killproc bosserver + RETVAL=$? + echo + [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/openafs-server + return $RETVAL +} + +rhstatus() { + status bosserver +} + +restart() { + stop || exit + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + restart + ;; + status) + rhstatus + ;; + condrestart) + [ -f /var/lock/subsys/openafs-server ] && restart || : + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart}" + exit 1 +esac diff --git a/src/packaging/RedHat/openafs.spec.in b/src/packaging/RedHat/openafs.spec.in new file mode 100644 index 0000000000..67bb8716e9 --- /dev/null +++ b/src/packaging/RedHat/openafs.spec.in @@ -0,0 +1,1491 @@ +# Openafs Spec $Revision$ + +%define afsvers 1.4.2 +%define pkgvers 1.4.2 +%define pkgrel 1 + +%if %{?osvers:0}%{!?osvers:1} +%define osvers 1 +%endif + +# Determine presence of rpmbuild command line --define arguments used for +# option specification +%define kernvers_on_cmdline %{?kernvers:1}%{!?kernvers:0} +%define build_userspace_on_cmdline %{?build_userspace:1}%{!?build_userspace:0} +%define build_modules_on_cmdline %{?build_modules:1}%{!?build_modules:0} + +# Determine the version of the kernel to build against +# - automatically select the latest kernel with sources from /lib/modules +# - note that this can be overridden on the command line +# +%if !%{kernvers_on_cmdline} +%define kernvers %(%{_sourcedir}/openafs-kernel-version.sh) +%endif +%define kversis %{_sourcedir}/openafs-kvers-is.sh +%define kvers %(%{kversis} parsev %{kernvers}) +%define kvers_is_24 %(%{kversis} %{kvers} "2.4") +%define kvers_is_26 %(%{kversis} %{kvers} "2.6") +%define ktype %(%{kversis} parset %{kernvers}) +%define kversion %(%{kversis} kvers %{kernvers}) + +# This is where to look for kernel build include files. Default +# is /lib/modules//build, but you can define kbase and +# kend on the commandline to change that. +# +%if %{?kbase:0}%{!?kbase:1} +%define kbase /lib/modules/ +%endif +%if %{?kend:0}%{!?kend:1} +%define kend /build +%endif +# Let the buildscript define the ksrcdir directly -- needed for RHEL4 +%if %{?ksrcdir:0}%{!?ksrcdir:1} +%define ksrcdir %{kbase}%{kernvers}%{kend} +%endif + +%if %{?kmoddir:0}%{!?kmoddir:1} +%define kmoddir /lib/modules +%endif +%define kxmoddir %{kmoddir}/%{kernvers} + +# Set 'debugspec' to 1 if you want to debug the spec file. This will +# not remove the installed tree as part of the %clean operation +%if %{?debugspec:0}%{!?debugspec:1} +%define debugspec 0 +%endif + +# Set 'krb5support' to 1 if you want to build the openafs-krb5 package +# to distribute aklog and asetkey +%define krb5support %{?_without_krb5:0}%{!?_without_krb5:1} + +# Set 'bootkernelsupport' to 1 if you want to build the +# kernel module for Red Hat BOOT Kernels on x86. +%define bootkernelsupport %{?_with_bootkernel:1}%{!?_with_bootkernel:0} + +# Define the location of your init.d directory +%define initdir /etc/init.d + +# Define the location of the PAM security module directory +%define pamdir /%{_lib}/security + +# Define the set of kernel module variations to be built: +# For 2.4 kernels we just build everything at once for a particular +# kernel. So we build up, smp, and bigmem all at once. +# For 2.6 kernels we have to build against the specific kernel headers +# for a particular kernel variation. AFS will handle the specific smp or +# non-smp determination. So just always build as if it's "up" -- the kernel +# version will have the 'variation' type already in the version #. + +%define up_package 0 +%define smp_package 0 +%define bigmem_package 0 +%define hugemem_package 0 +%define largesmp_package 0 + +####################################################################### +# 2.4 +%if %{kvers_is_24} +%define kdepend kernel-source +%define up_package 1 +%define smp_package 1 +%define largesmp_package 1 +%define smp_ext smp +%define largesmp_ext largesmp + +%define bigmem_package %(%{kversis} find %{ksrcdir} %{_target_cpu} bigmem) +%if %{bigmem_package} +%define bigmem_ext bigmem +%endif + +%define hugemem_package %(%{kversis} find %{ksrcdir} %{_target_cpu} hugemem) +%if %{hugemem_package} +%define hugemem_ext hugemem +%endif + +%define kvariations up smp largesmp %{?bigmem_ext:%{bigmem_ext}} %{?hugemem_ext:%{hugemem_ext}} + +####################################################################### +# 2.6 +%else +%if %{kvers_is_26} +%define kvariations up +%define up_package %(%{kversis} "%{ktype}" "") +%define smp_package %(%{kversis} "%{ktype}" "smp") +%define largesmp_package %(%{kversis} "%{ktype}" "largesmp") +%define hugemem_package %(%{kversis} "%{ktype}" "hugemem") + +%if !%{up_package} && !%{smp_package} && !%{hugemem_package} && !%{largesmp_package} +%error "unknown kernel type: %{ktype}" +%endif + +%if !%{kernvers_on_cmdline} +%define kdepend %{ksrcdir}/include/linux/version.h +%endif + +####################################################################### +# other kernels? +%else +%error "unknown kernel version: ${kvers} (parsed from %{kernvers})" +%endif +%endif + +####################################################################### +# You probably don't need to change anything beyond this line +# NOTE: If you do, please email me!!! + +# Determine which elements of OpenAFS to build. For non-x86 arches +# (subject to the ExclusiveArch setting, below), we build both userspace +# and modules. For most x86 arches, we build just the kernel modules. For +# i386, we build just the userspace. If you're running an i386 kernel, +# you'll need to tweak that last bit. +%if !%{build_userspace_on_cmdline} && !%{build_modules_on_cmdline} + +%ifarch x86_64 ia64 +%define build_userspace 1 +%define build_modules 1 +%endif + +%ifarch %{ix86} +%define build_userspace 0 +%define build_modules 1 +%endif + +%ifarch i386 +%define build_userspace 1 +%define build_modules 0 +%endif + +%endif + +# deal with cmdline specification +%if %{build_userspace_on_cmdline} || %{build_modules_on_cmdline} +%if !%{build_userspace_on_cmdline} +%define build_userspace 0 +%endif +%if !%{build_modules_on_cmdline} +%define build_modules 0 +%endif +%endif + +# Make sure RPM doesn't complain about installed but non-packaged files. +#define __check_files %{nil} + +Summary: OpenAFS distributed filesystem +Name: openafs +Version: %{pkgvers} +Release: %{osvers}.%{pkgrel} +License: IBM Public License +URL: http://www.openafs.org +BuildRoot: %{_tmppath}/%{name}-%{version}-root +Packager: Derek Atkins +Group: Networking/Filesystems +BuildRequires: %{?kdepend:%{kdepend}, } pam-devel +ExclusiveArch: %{ix86} x86_64 ia64 + +# http://dl.openafs.org/dl/openafs/candidate/%{afsvers}/... +Source0: http://www.openafs.org/dl/openafs/%{afsvers}/openafs-%{afsvers}-src.tar.bz2 +Source1: http://www.openafs.org/dl/openafs/%{afsvers}/openafs-%{afsvers}-doc.tar.bz2 +%define srcdir openafs-%{afsvers} + +Source2: openafs-ThisCell +# http://grand.central.org/dl/cellservdb/CellServDB +Source3: openafs-CellServDB +Source4: openafs-SuidCells +Source5: openafs-cacheinfo +# Source6: openafs-afsmodname +Source7: openafs-LICENSE.Sun +Source8: openafs-README +Source10: http://www.openafs.org/dl/openafs/%{afsvers}/RELNOTES-%{afsvers} +Source11: http://www.openafs.org/dl/openafs/%{afsvers}/ChangeLog + +Source15: openafs.sysconfig +Source16: openafs-client.init +Source17: openafs-server.init + +# from ftp://ftp.cmf.nrl.navy.mil/pub/kerberos5/afs-krb5-2.0.tar.gz +Source20: openafs-krb5-2.0.tar.gz + +Source30: openafs-kernel-version.sh +Source31: openafs-buildall.sh +Source32: openafs-makesrc.sh +Source33: openafs-kvers-is.sh + +Patch0: openafs-1.4.0-kmodule26.patch +#Patch1: openafs-1.4.1-moduleparam.patch + +Patch10: afs-krb5-2.0-krb524.patch +Patch11: afs-krb5-2.0-libsocket.patch +Patch12: afs-krb5-2.0-com_err.patch +Patch13: afs-krb5-2.0-openafs1.3.patch +Patch14: afs-krb5-2.0-res_search.patch + +%description +The AFS distributed filesystem. AFS is a distributed filesystem +allowing cross-platform sharing of files among multiple computers. +Facilities are provided for access control, authentication, backup and +administrative management. + +This package provides common files shared across all the various +OpenAFS packages but are not necessarily tied to a client or server. + +The OpenAFS SRPM can be rebuilt with the following options to control +what gets built: + + --define "kernvers 2.4.20-1.1376_FC3" Specify the specific kernel version + to build modules against. The default is + to build against the currently-running + kernel. + --define "kbase /lib/modules/" The base location to look for kernel headers + --define "kend /build" The 'end' location to look for kernels + The build will define ksrvdir as + %%{kbase}%%{kend} + + --without krb5 Disable krb5 support (default: with krb5) + --with bitmap-later Enable "bitmap later" support + --with bos-restricted Enable "bos restricted" mode + --with fast-restart Enable "fast restart" mode + --with largefiles Enable "largefile fileserver" mode + --with supergroups Enable "supergroups" + + --target=i386 The target architecture to build for. + When building for a non-default target + the build may choose whether to build + userspace or kernel modules automatically. + The defaults are probably what you want. + + --define "build_userspace 1" Request building of userspace tools + --define "build_modules 1" Request building of kernel modules + You probably never need to specify these. + + --define "kmoddir /lib/modules" This is the base location where modules + will be installed. You probably don't + need to change this ever. + +To a kernel module for your running kernel, just run: + rpmbuild --rebuild --target=`uname -m` openafs-%{pkgvers}-%{osvers}.%{pkgrel}.src.rpm + +############################################################################## +# +# build the userspace side of things if so requested +# +############################################################################## +%if %{build_userspace} + +%package client +Requires: binutils, openafs-kernel, openafs = %{PACKAGE_VERSION} +Summary: OpenAFS Filesystem Client +Group: Networking/Filesystem + +%description client +The AFS distributed filesystem. AFS is a distributed filesystem +allowing cross-platform sharing of files among multiple computers. +Facilities are provided for access control, authentication, backup and +administrative management. + +This package provides basic client support to mount and manipulate +AFS. + +%package server +Requires: openafs = %{PACKAGE_VERSION} +Summary: OpenAFS Filesystem Server +Group: Networking/Filesystems + +%description server +The AFS distributed filesystem. AFS is a distributed filesystem +allowing cross-platform sharing of files among multiple computers. +Facilities are provided for access control, authentication, backup and +administrative management. + +This package provides basic server support to host files in an AFS +Cell. + +%package authlibs +Summary: OpenAFS authentication shared libraries +Group: Networking/Filesystems + +%description authlibs +The AFS distributed filesystem. AFS is a distributed filesystem +allowing cross-platform sharing of files among multiple computers. +Facilities are provided for access control, authentication, backup and +administrative management. + +This package provides a shared version of libafsrpc and libafsauthent. +None of the programs included with OpenAFS currently use these shared +libraries; however, third-party software that wishes to perform AFS +authentication may link against them. + +%package authlibs-devel +Requires: openafs-authlibs = %{PACKAGE_VERSION} +Requires: openafs-devel = %{PACKAGE_VERSION} +Summary: OpenAFS shared library development +Group: Development/Filesystems + +%description authlibs-devel +The AFS distributed filesystem. AFS is a distributed filesystem +allowing cross-platform sharing of files among multiple computers. +Facilities are provided for access control, authentication, backup and +administrative management. + +This package includes the static versions of libafsrpc and +libafsauthent, and symlinks required for building against the dynamic +libraries. + +%package devel +Summary: OpenAFS Development Libraries and Headers +Group: Development/Filesystems + +%description devel +The AFS distributed filesystem. AFS is a distributed filesystem +allowing cross-platform sharing of files among multiple computers. +Facilities are provided for access control, authentication, backup and +administrative management. + +This package provides static development libraries and headers needed +to compile AFS applications. Note: AFS currently does not provide +shared libraries. + +%package docs +Summary: OpenAFS user and administrator documentation +Requires: openafs = %{PACKAGE_VERSION} +Group: Networking/Filesystems + +%description docs +The AFS distributed filesystem. AFS is a distributed filesystem +allowing cross-platform sharing of files among multiple computers. +Facilities are provided for access control, authentication, backup and +administrative management. + +This package provides HTML documentation for OpenAFS users and system +administrators. + +%package kernel-source +Summary: OpenAFS Kernel Module source tree +Group: Networking/Filesystems +Provides: openafs-kernel = %{PACKAGE_VERSION} + +%description kernel-source +The AFS distributed filesystem. AFS is a distributed filesystem +allowing cross-platform sharing of files among multiple computers. +Facilities are provided for access control, authentication, backup and +administrative management. + +This package provides the source code to build your own AFS kernel +module. + +%package compat +Summary: OpenAFS client compatibility symlinks +Requires: openafs = %{PACKAGE_VERSION}, openafs-client = %{PACKAGE_VERSION} +Group: Networking/Filesystems +Obsoletes: openafs-client-compat + +%description compat +The AFS distributed filesystem. AFS is a distributed filesystem +allowing cross-platform sharing of files among multiple computers. +Facilities are provided for access control, authentication, backup and +administrative management. + +This package provides compatibility symlinks in /usr/afsws. It is +completely optional, and is only necessary to support legacy +applications and scripts that hard-code the location of AFS client +programs. + +%package kpasswd +Summary: OpenAFS KA kpasswd support +Requires: openafs +Group: Networking/Filesystems + +%description kpasswd +The AFS distributed filesystem. AFS is a distributed filesystem +allowing cross-platform sharing of files among multiple computers. +Facilities are provided for access control, authentication, backup and +administrative management. + +This package provides the compatibility symlink for kpasswd, in case +you are using KAserver instead of Krb5. + +%if %{krb5support} +%package krb5 +Summary: OpenAFS programs to use with krb5 +Requires: openafs = %{PACKAGE_VERSION} +Group: Networking/Filesystems +BuildRequires: krb5-devel + +%description krb5 +The AFS distributed filesystem. AFS is a distributed filesystem +allowing cross-platform sharing of files among multiple computers. +Facilities are provided for access control, authentication, backup and +administrative management. + +This package provides compatibility programs so you can use krb5 +to authenticate to AFS services, instead of using AFS's homegrown +krb4 lookalike services. +%endif + +%endif + +############################################################################## +# +# build the kernel modules if so requested +# +############################################################################## +%if %{build_modules} + +%define modkversion %(echo %{kernvers} | cut -d- -f1) +%define modkrelease %(echo %{kernvers} | cut -d- -f2) +%define modpkgrel %{modkversion}_%{modkrelease}_%{pkgrel} + +%if %{up_package} +%package kernel +Summary: OpenAFS Kernel Module (compiled for UP) +Release: %{modpkgrel} +Provides: openafs-kernel = %{PACKAGE_VERSION} +Requires: kernel = %{kversion} +Group: Networking/Filesystems + +%description kernel +The AFS distributed filesystem. AFS is a distributed filesystem +allowing cross-platform sharing of files among multiple computers. +Facilities are provided for access control, authentication, backup and +administrative management. + +This package provides a precompiled AFS kernel module for %{kernvers}. +%endif + +%if %{smp_package} +%package kernel-smp +Summary: OpenAFS Kernel Module (compiled for SMP) +Release: %{modpkgrel} +Provides: openafs-kernel = %{PACKAGE_VERSION} +Requires: kernel-smp = %{kversion} +Group: Networking/Filesystems + +%description kernel-smp +The AFS distributed filesystem. AFS is a distributed filesystem +allowing cross-platform sharing of files among multiple computers. +Facilities are provided for access control, authentication, backup and +administrative management. + +This package provides a precompiled AFS kernel module for %{kernvers}. +%endif + +%if %{largesmp_package} +%package kernel-largesmp +Summary: OpenAFS Kernel Module (compiled for LARGESMP) +Release: %{modpkgrel} +Provides: openafs-kernel = %{PACKAGE_VERSION} +Requires: kernel-largesmp = %{kversion} +Group: Networking/Filesystems + +%description kernel-largesmp +The AFS distributed filesystem. AFS is a distributed filesystem +allowing cross-platform sharing of files among multiple computers. +Facilities are provided for access control, authentication, backup and +administrative management. + +This package provides a precompiled AFS kernel module for %{kernvers}. +%endif + +%if %{bigmem_package} +%package kernel-bigmem +Summary: OpenAFS Kernel Module (compiled for SMP & big memory support) +Release: %{modpkgrel} +Provides: openafs-kernel = %{PACKAGE_VERSION} +Requires: kernel-bigmem = %{kversion} +Group: Networking/Filesystems + +%description kernel-bigmem +The AFS distributed filesystem. AFS is a distributed filesystem +allowing cross-platform sharing of files among multiple computers. +Facilities are provided for access control, authentication, backup and +administrative management. + +This package provides a precompiled AFS kernel module for %{kernvers}. +%endif + +%if %{hugemem_package} +%package kernel-hugemem +Summary: OpenAFS Kernel Module (compiled for SMP & huge memory support) +Release: %{modpkgrel} +Provides: openafs-kernel = %{PACKAGE_VERSION} +Requires: kernel-hugemem = %{kversion} +Group: Networking/Filesystems + +%description kernel-hugemem +The AFS distributed filesystem. AFS is a distributed filesystem +allowing cross-platform sharing of files among multiple computers. +Facilities are provided for access control, authentication, backup and +administrative management. + +This package provides a precompiled AFS kernel module for %{kernvers}. +%endif + +%endif + +############################################################################## +# +# PREP +# +############################################################################## + +%prep + +: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +: @@@ +: @@@ kernel version: %{kernvers} +: @@@ base kernel version:%{kversion} +: @@@ kernel modules dir: %{kxmoddir} +: @@@ kernel source dir: %{ksrcdir} +%if %{kvers_is_24} +: @@@ kernel variations: %{kvariations} +%else +%if %{up_package} +: @@@ kernel type: up +%else +: @@@ kernel type: %{ktype} +%endif +%endif +: @@@ PAM modules dir: %{pamdir} +: @@@ build userspace: %{build_userspace} +: @@@ build modules: %{build_modules} +: @@@ arch: %{_arch} +: @@@ target cpu: %{_target_cpu} +: @@@ +: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + +# Install OpenAFS src and doc +#%setup -q -n %{srcdir} +%setup -q -b 1 -n %{srcdir} + +# Patch openafs to build a kernel module named "openafs" instead of "libafs" +%patch0 -p1 -b .kmod26 + +# Patch to work around the Linux 2.6.9 module_param function +#%patch1 -p0 -b .modparam + +%if %{build_userspace} +# Save some time -- install these if we're building userspace + +# Install the Krb5 Migration Kit +%setup -q -T -D -a 20 -n %{srcdir} + +# +# patch afs-krb5 migration kit to work with openafs-1.3 and krb5-1.3; +# add some features and fix bugs +# + +# krb524 is no longer in a separate library as of krb5-1.3; handle this +%patch10 -p0 -b .krb524 + +# make sure NETLIBS gets added to the proper programs (seems to be +# needed only for Solaris) +%patch11 -p0 -b .libsocket + +# find an existing libcom_err and use that +%patch12 -p0 -b .com_err + +# make afs-krb5 work with recent OpenAFS; includes and prototypes +%patch13 -p0 -b .openafs13 + +# nothing in afs-krb5 actually uses res_search +%patch14 -p0 -b .res_search + +(cd afs-krb5/src && autoreconf) || exit 1 + +%endif + + +############################################################################## +# +# building +# +############################################################################## +%build + +case %{kernvers} in + 2.4.*) + kv='24' + ;; + 2.6.*) + kv='26' + ;; + *) + echo "I don't know how to build linux-`expr ${kernvers} : \(^[0-9]*[.][0-9]*\)`" + exit 1 + ;; +esac + +case %{_arch} in + x86_64) sysname=amd64_linux${kv} ;; + alpha*) sysname=alpha_linux_${kv} ;; + i386|i486|i586|i686|athlon) sysname=i386_linux${kv} ;; + *) sysname=%{_arch}_linux${kv} ;; +esac + +%ifarch %{ix86} +archlist="i386 i586 i686 athlon" +%if %{bootkernelsupport} + archlist="${archlist} BOOT" +%endif +%else +archlist=%{_arch} +%endif + +# +# PrintDefine var value statements file +# +PrintDefine() { + case $3 in + *ifn*) + echo "#ifndef $1" >> $4 + ;; + esac + case $3 in + *und*) + echo "#undef $1" >> $4 + ;; + esac + case $3 in + *def*) + echo "#define $1 $2" >> $4 + ;; + esac + case $3 in + *end*) + echo "#endif" >> $4 + ;; + esac + case $3 in + *inc*) + echo "#include $1" >> $4 + ;; + esac + case $3 in + *nl*) + echo "" >> $4 + ;; + esac +} + +# PrintRedhatKernelFix arch mp file +PrintRedhatKernelFix() { + arch="$1" + up=0 + smp=0 + largesmp=0 + ent=0 + bigmem=0 + hugemem=0 + boot=0 + bootsmp=0 + + case "$2" in + up) up=1;; + smp) smp=1;; + largesmp) largesmp=1;; + bigmem) bigmem=1;; + hugemem) hugemem=1;; + *) + echo "$2 not supported" + exit 2;; + esac + + file="$3" + + rm -f $file + touch $file + + PrintDefine "REDHAT_FIX_H" "" ifn,def,nl $file + + PrintDefine __BOOT_KERNEL_ENTERPRISE $ent und,def,nl $file + PrintDefine __BOOT_KERNEL_BIGMEM $bigmem und,def,nl $file + PrintDefine __BOOT_KERNEL_HUGEMEM $hugemem und,def,nl $file + PrintDefine __BOOT_KERNEL_SMP $smp und,def,nl $file + PrintDefine __BOOT_KERNEL_LARGESMP $largesmp und,def,nl $file + PrintDefine __BOOT_KERNEL_UP $up und,def,nl $file + PrintDefine __BOOT_KERNEL_BOOT $boot und,def,nl $file + PrintDefine __BOOT_KERNEL_BOOTSMP $bootsmp und,def,nl $file + + PrintDefine '"/boot/kernel.h"' "" inc,nl $file # include file + + for ar in $archlist ; do + if [ "$ar" = "$arch" ]; then + PrintDefine "__MODULE_KERNEL_$ar" "1" ifn,def,end $file + else + PrintDefine "__MODULE_KERNEL_$ar" "" und $file # undef + fi + done + echo "" >> $file + + PrintDefine "" "" end $file + + if [ %{debugspec} = 1 ] ; then + echo "Kernel Configuration File for Red Hat kernels:" + cat $file + fi +} + +config_opts="--enable-redhat-buildsys \ + %{?_with_bitmap_later:--enable-bitmap-later} \ + %{?_with_bos_restricted:--enable-bos-restricted-mode} \ + %{?_with_fast_restart:--enable-fast-restart} \ + %{?_with_largefiles:--enable-largefile-fileserver} \ + %{?_with_supergroups:--enable-supergroups} \ + --enable-transarc-paths" + +# Configure AFS + +CFLAGS="$RPM_OPT_FLAGS"; export CFLAGS + +./configure --with-afs-sysname=${sysname} \ + --prefix=%{_prefix} \ + --libdir=%{_libdir} \ + --bindir=%{_bindir} \ + --sbindir=%{_sbindir} \ + --with-linux-kernel-headers=%{ksrcdir} \ +%if %{krb5support} + --with-krb5-conf \ +%endif + $config_opts \ + || exit 1 + +%if %{build_userspace} +# Build the user-space AFS stuff +make dest_nolibafs || exit 1 + +# Build the libafs tree +make only_libafs_tree || exit 1 + +%if %{krb5support} +# Now build ka-forwarder +(cd afs-krb5/src && + ./configure --prefix=%{_prefix} --with-krb5=%{_prefix}/kerberos \ + --libdir=%{_libdir} \ + --bindir=%{_bindir} \ + --sbindir=%{_sbindir} \ + --with-afs=`pwd`/../../${sysname}/dest/ && \ + make all PROGS="ka-forwarder" && \ + install -c -s ka-forwarder `pwd`/../../${sysname}/dest/etc ) \ + || exit 1 +%endif + +%endif + +%if %{build_modules} +%if %{kvers_is_24} +# Build all the kernel modules for linux 2.4.x +for variation in %{kvariations} +do + if [ ${variation} = up ] + then + local_smp_def=-DREDHAT_FIX + suffix= + else + local_smp_def="-DAFS_SMP -DREDHAT_FIX" + suffix=${variation} + fi + + PrintRedhatKernelFix %{_target_cpu} $variation src/config/redhat-fix.h + make dest_only_libafs LOCAL_SMP_DEF="${local_smp_def}" \ + LINUX_MODULE_NAME="${suffix}" MPS=SP + +done +rm -f src/config/redhat-fix.h + +%elseif %{kvers_is_26} +# Build the kernel module for this version of linux 2.6.x +# Notice how much easier this is than 2.4. On the other hand, +# we require much more external support to build multiple modules. + + # the MPS=SP just means that we don't add a '.mp' to the name. + make dest_only_libafs MPS=SP + +%endif +%endif + + +############################################################################## +# +# installation +# +############################################################################## +%install + +export DONT_GPRINTIFY=1 + +[ $RPM_BUILD_ROOT != / ] && rm -rf $RPM_BUILD_ROOT + +case %{kernvers} in + 2.4.*) + kv='24' + kmodend=.o + ;; + 2.6.*) + kv='26' + kmodend=.ko + ;; + *) + echo "I don't know how to build linux-`expr ${kernvers} : \(^[0-9]*[.][0-9]*\)`" + exit 1 + ;; +esac + +case %{_arch} in + x86_64) sysname=amd64_linux${kv} ;; + alpha*) sysname=alpha_linux_${kv} ;; + i386|i486|i586|i686|athlon) sysname=i386_linux${kv} ;; + *) sysname=%{_arch}_linux${kv} ;; +esac + +# Build install tree +%if %{build_userspace} +mkdir -p $RPM_BUILD_ROOT%{_sbindir} +mkdir -p $RPM_BUILD_ROOT%{_libdir} +mkdir -p $RPM_BUILD_ROOT/etc/sysconfig +mkdir -p $RPM_BUILD_ROOT%{initdir} +mkdir -p $RPM_BUILD_ROOT/etc/openafs +mkdir -p $RPM_BUILD_ROOT%{pamdir} +mkdir -p $RPM_BUILD_ROOT%{_prefix}/afs/etc +mkdir -p $RPM_BUILD_ROOT%{_prefix}/afs/logs +mkdir -p $RPM_BUILD_ROOT%{_prefix}/vice/etc +mkdir -p $RPM_BUILD_ROOT%{_prefix}/vice/cache +chmod 700 $RPM_BUILD_ROOT%{_prefix}/vice/cache +mkdir -p $RPM_BUILD_ROOT%{_mandir} + +# Copy files from dest to the appropriate places in BuildRoot +tar cf - -C ${sysname}/dest bin include | tar xf - -C $RPM_BUILD_ROOT%{_prefix} +tar cf - -C ${sysname}/dest/lib . | tar xf - -C $RPM_BUILD_ROOT%{_libdir} +tar cf - -C ${sysname}/dest/etc . | tar xf - -C $RPM_BUILD_ROOT%{_sbindir} +tar cf - -C ${sysname}/dest/root.server%{_prefix}/afs bin | tar xf - -C $RPM_BUILD_ROOT%{_prefix}/afs +tar cf - -C ${sysname}/dest/root.client%{_prefix}/vice/etc afsd | tar xf - -C $RPM_BUILD_ROOT%{_prefix}/vice/etc + +# Link kpasswd to kapasswd +ln -f $RPM_BUILD_ROOT%{_bindir}/kpasswd $RPM_BUILD_ROOT%{_bindir}/kapasswd + +# Copy root.client config files +install -m 755 %{SOURCE15} $RPM_BUILD_ROOT/etc/sysconfig/openafs +install -m 755 %{SOURCE16} $RPM_BUILD_ROOT%{initdir}/openafs-client +install -m 755 %{SOURCE17} $RPM_BUILD_ROOT%{initdir}/openafs-server + +# Copy PAM modules +install -m 755 ${sysname}/dest/lib/pam* $RPM_BUILD_ROOT%{pamdir} + +# PAM symlinks +ln -sf pam_afs.so.1 $RPM_BUILD_ROOT%{pamdir}/pam_afs.so +ln -sf pam_afs.krb.so.1 $RPM_BUILD_ROOT%{pamdir}/pam_afs.krb.so + +# Populate /usr/vice/etc +uve=$RPM_BUILD_ROOT%{_prefix}/vice/etc +install -p -m 644 %{SOURCE2} $uve/ThisCell +install -p -m 644 %{SOURCE3} $uve/CellServDB +install -p -m 644 %{SOURCE4} $uve/SuidCells +install -p -m 644 %{SOURCE5} $uve/cacheinfo + +# +# install kernel-source +# + +# Install the kernel module source tree +mkdir -p $RPM_BUILD_ROOT%{_prefix}/src/openafs-kernel-%{afsvers}/src +tar cf - -C libafs_tree . | \ + tar xf - -C $RPM_BUILD_ROOT%{_prefix}/src/openafs-kernel-%{afsvers}/src + +# Next, copy the LICENSE Files, README +install -m 644 src/LICENSE $RPM_BUILD_ROOT%{_prefix}/src/openafs-kernel-%{afsvers}/LICENSE.IBM +install -m 644 %{SOURCE7} $RPM_BUILD_ROOT%{_prefix}/src/openafs-kernel-%{afsvers}/LICENSE.Sun +install -m 644 %{SOURCE8} $RPM_BUILD_ROOT%{_prefix}/src/openafs-kernel-%{afsvers}/README + +# +# Install DOCUMENTATION +# + +# Build the DOC directory +mkdir -p $RPM_BUILD_ROOT/$RPM_DOC_DIR/openafs-%{afsvers} +tar cf - -C doc LICENSE html pdf | \ + tar xf - -C $RPM_BUILD_ROOT/$RPM_DOC_DIR/openafs-%{afsvers} +install -m 644 %{SOURCE10} $RPM_BUILD_ROOT/$RPM_DOC_DIR/openafs-%{afsvers} +install -m 644 %{SOURCE11} $RPM_BUILD_ROOT/$RPM_DOC_DIR/openafs-%{afsvers} + +# +# man pages +# +tar cf - -C doc/man-pages man1 man5 man8 | \ + tar xf - -C $RPM_BUILD_ROOT%{_mandir} + +# Copy the uninstalled krb5 files (or delete the unused krb5 files) +%if %{krb5support} +mv $RPM_BUILD_ROOT%{_prefix}/afs/bin/asetkey $RPM_BUILD_ROOT%{_sbindir}/asetkey +%else +rm -f $RPM_BUILD_ROOT%{_mandir}/man8/asetkey.* +%endif + +# remove unused man pages +for x in afs_ftpd afs_inetd afs_login afs_rcp afs_rlogind afs_rsh \ + dkload knfs package runntp; do + rm -f $RPM_BUILD_ROOT%{_mandir}/man1/${x}.1 +done + +# rename kpasswd to kapasswd +mv $RPM_BUILD_ROOT%{_mandir}/man1/kpasswd.1 $RPM_BUILD_ROOT%{_mandir}/man1/kapasswd.1 + +# gzip man pages +gzip -9 $RPM_BUILD_ROOT%{_mandir}/man*/* + +# create list of man pages that go in the 'openafs' package +/bin/ls $RPM_BUILD_ROOT%{_mandir}/man1 \ + |egrep '^afs|^fs|^kas|^klog|kapasswd|pagsh|^pts|^rxdebug|scout|^sys|tokens|translate|udebug|unlog|^uss|^vos' \ + >openafs-man1files + +/bin/ls $RPM_BUILD_ROOT%{_mandir}/man5 \ + |egrep 'CellServDB|ThisCell|afsmonitor|^butc|^uss' \ + >openafs-man5files + +/bin/ls $RPM_BUILD_ROOT%{_mandir}/man8 \ + |egrep '^backup|^bos|^butc|^fms|^fstrace|^kas|^uss' \ + >openafs-man8files + +# +# create filelist +# +grep -v "^#" >openafs-file-list <>openafs-file-list +cat openafs-man5files \ + | ( while read x; do echo "%{_mandir}/man5/$x"; done ) \ + >>openafs-file-list +cat openafs-man8files \ + | ( while read x; do echo "%{_mandir}/man8/$x"; done ) \ + >>openafs-file-list + +# +# Install compatiblity links +# +for d in bin:bin etc:sbin; do + olddir=`echo $d | sed 's/:.*$//'` + newdir=`echo $d | sed 's/^.*://'` + mkdir -p $RPM_BUILD_ROOT%{_prefix}/afsws/$olddir + for f in `cat openafs-file-list`; do + if echo $f | grep -q /$newdir/; then + fb=`basename $f` + ln -sf %{_prefix}/$newdir/$fb $RPM_BUILD_ROOT%{_prefix}/afsws/$olddir/$fb + fi + done +done + +# +# Remove files we're not installing +# + +# remove duplicated files from /usr/afs/bin +for f in bos fs kas klog klog.krb kpwvalid pts tokens tokens.krb udebug vos ; do + rm -f $RPM_BUILD_ROOT%{_prefix}/afs/bin/$f +done + +# compile_et is duplicated in e2fsprogs +# the rest are not needed. +for f in compile_et dlog dpass install knfs livesys xstat_cm_test xstat_fs_test ; do + rm -f $RPM_BUILD_ROOT%{_bindir}/$f +done + +# not supported on Linux or duplicated +for f in kdb rmtsysd kpwvalid ; do + rm -f $RPM_BUILD_ROOT%{_sbindir}/$f +done +rm -f $RPM_BUILD_ROOT%{_sbindir}/kdump* + +# remove man pages from programs deleted above +for f in 1/dlog 1/dpass 1/livesys 1/xstat_cm_test 1/xstat_fs_test 8/kdb 8/kpwvalid 8/xfs_size_check 1/package_test 5/package 8/package ; do + rm -f $RPM_BUILD_ROOT%{_mandir}/man$f.* +done + +# PAM modules are doubly-installed Remove the version we don't need +for f in pam_afs.krb.so.1 pam_afs.so.1 ; do + rm -f $RPM_BUILD_ROOT%{_libdir}/$f +done + +# Remove empty files from the krb5 migration +for f in afs2k5db fakeka ; do + rm -f $RPM_BUILD_ROOT%{_sbindir}/$f +done + +%endif + +%if %{build_modules} +# Install the kernel modules +for variation in %{kvariations} +do + if [ ${variation} = up ] + then + kvar=%{kxmoddir} + modname=libafs-%{kernvers}${kmodend} + else + kvar=%{kxmoddir}${variation} + modname=libafs-%{kernvers}${variation}${kmodend} + fi + + srcdir=${sysname}/dest/root.client%{_prefix}/vice/etc/modload + dstdir=$RPM_BUILD_ROOT${kvar}/kernel/fs/openafs + + mkdir -p ${dstdir} + + # Mark kernel modules as executable; otherwise they won't get stripped + # by /usr/lib/rpm/brp-strip + install -m 744 ${srcdir}/${modname} ${dstdir}/openafs${kmodend} +done +%endif + +############################################################################## +### +### clean +### +############################################################################## +%clean +rm -f openafs-file-list +[ "$RPM_BUILD_ROOT" != "/" -a "x%{debugspec}" != "x1" ] && \ + rm -fr $RPM_BUILD_ROOT + + +############################################################################## +### +### scripts +### +############################################################################## +%if %{build_userspace} + +%pre compat +if [ -e %{_prefix}/afsws ]; then + /bin/rm -fr %{_prefix}/afsws +fi + +%post client +chkconfig --add openafs-client +if [ ! -d /afs ]; then + mkdir /afs + chown root.root /afs + chmod 0755 /afs +fi + +echo +echo The AFS cache is configured for 100 MB. Edit the +echo /usr/vice/etc/cacheinfo file to change this before +echo running AFS for the first time. You should also +echo set your home cell in /usr/vice/etc/ThisCell. +echo +echo Also, you may want to edit /etc/pam.d/login and +echo possibly others there to get an AFS token on login. +echo Put the line: +echo +echo auth sufficient %{pamdir}/pam_afs.so try_first_pass ignore_root +echo +echo before the one for pwdb. +echo + +%post server +chkconfig --add openafs-server +%{initdir}/openafs-server condrestart + +%post authlibs +/sbin/ldconfig + +%postun authlibs +/sbin/ldconfig + +%preun +if [ $1 = 0 ] ; then + [ -d /afs ] && rmdir /afs +fi + +%preun client +if [ $1 = 0 ] ; then + %{initdir}/openafs-client stop + chkconfig --del openafs-client +fi + +%preun server +if [ $1 = 0 ] ; then + %{initdir}/openafs-server stop + chkconfig --del openafs-server +fi + +%endif + +%if %{build_modules} + +%if %{up_package} +%post kernel +/sbin/depmod -ae %{kernvers} + +%postun kernel +/sbin/depmod -ae %{kernvers} + +%endif + +%if %{smp_package} +%post kernel-smp +/sbin/depmod -ae %{kernvers}%{?smp_ext:%{smp_ext}} + +%postun kernel-smp +/sbin/depmod -ae %{kernvers}%{?smp_ext:%{smp_ext}} +%endif + +%if %{largesmp_package} +%post kernel-largesmp +/sbin/depmod -ae %{kernvers}%{?largesmp_ext:%{largesmp_ext}} + +%postun kernel-largesmp +/sbin/depmod -ae %{kernvers}%{?largesmp_ext:%{largesmp_ext}} +%endif + +%if %{bigmem_package} +%post kernel-bigmem +/sbin/depmod -ae %{kernvers}%{?bigmem_ext:%{bigmem_ext}} + +%postun kernel-bigmem +/sbin/depmod -ae %{kernvers}%{?bigmem_ext:%{bigmem_ext}} +%endif + +%if %{hugemem_package} +%post kernel-hugemem +/sbin/depmod -ae %{kernvers}%{?hugemem_ext:%{hugemem_ext}} + +%postun kernel-hugemem +/sbin/depmod -ae %{kernvers}%{?hugemem_ext:%{hugemem_ext}} +%endif + +%endif + + +############################################################################## +### +### file lists +### +############################################################################## +%if %{build_userspace} + +%files -f openafs-file-list +%defattr(-,root,root) +%config /etc/sysconfig/openafs +%doc %{_docdir}/openafs-%{afsvers}/LICENSE + +%files docs +%defattr(-,root,root) +%doc %{_docdir}/openafs-%{afsvers} + +%files client +%defattr(-,root,root) +%dir %{_prefix}/vice +%dir %{_prefix}/vice/cache +%dir %{_prefix}/vice/etc +%config %{_prefix}/vice/etc/CellServDB +%config %{_prefix}/vice/etc/SuidCells +%config %{_prefix}/vice/etc/ThisCell +%config %{_prefix}/vice/etc/cacheinfo +%{_bindir}/cmdebug +%{_bindir}/up +%{_prefix}/vice/etc/afsd +%{pamdir}/pam_afs.krb.so.1 +%{pamdir}/pam_afs.krb.so +%{pamdir}/pam_afs.so.1 +%{pamdir}/pam_afs.so +%{initdir}/openafs-client +%{_mandir}/man1/cmdebug.* +%{_mandir}/man1/up.* +%{_mandir}/man5/afs* +%{_mandir}/man5/cacheinfo.* +%{_mandir}/man8/afsd.* + +%files server +%defattr(-,root,root) +%dir %{_prefix}/afs +%dir %{_prefix}/afs/bin +%dir %{_prefix}/afs/etc +%dir %{_prefix}/afs/logs +%{_prefix}/afs/bin/bosserver +%{_prefix}/afs/bin/bos_util +%{_prefix}/afs/bin/buserver +%{_prefix}/afs/bin/fileserver +# Should we support KAServer? +%{_prefix}/afs/bin/kaserver +%{_prefix}/afs/bin/pt_util +%{_prefix}/afs/bin/ptserver +%{_prefix}/afs/bin/salvager +%{_prefix}/afs/bin/upclient +%{_prefix}/afs/bin/upserver +%{_prefix}/afs/bin/vlserver +%{_prefix}/afs/bin/volinfo +%{_prefix}/afs/bin/volserver +%{_sbindir}/kadb_check +%{_sbindir}/prdb_check +%{_sbindir}/vldb_check +%{_sbindir}/vldb_convert +%{_sbindir}/voldump +%{initdir}/openafs-server +%{_mandir}/man5/AuthLog.* +%{_mandir}/man5/BackupLog.* +%{_mandir}/man5/BosConfig.* +%{_mandir}/man5/BosLog.* +%{_mandir}/man5/FORCESALVAGE.* +%{_mandir}/man5/FileLog.* +%{_mandir}/man5/KeyFile.* +%{_mandir}/man5/NetInfo.* +%{_mandir}/man5/NetRestrict.* +%{_mandir}/man5/NoAuth.* +%{_mandir}/man5/SALVAGE.fs.* +%{_mandir}/man5/SalvageLog.* +%{_mandir}/man5/sysid.* +%{_mandir}/man5/UserList.* +%{_mandir}/man5/VLLog.* +%{_mandir}/man5/VolserLog.* +%{_mandir}/man5/bdb.DB0.* +%{_mandir}/man5/fms.log.* +%{_mandir}/man5/kaserver.DB0.* +%{_mandir}/man5/kaserverauxdb.* +%{_mandir}/man5/prdb.DB0.* +%{_mandir}/man5/salvage.lock.* +%{_mandir}/man5/tapeconfig.* +%{_mandir}/man5/vldb.DB0.* +%{_mandir}/man8/buserver.* +%{_mandir}/man8/fileserver.* +%{_mandir}/man8/kadb_check.* +%{_mandir}/man8/prdb_check.* +%{_mandir}/man8/ptserver.* +%{_mandir}/man8/salvager.* +%{_mandir}/man8/upclient.* +%{_mandir}/man8/upserver.* +%{_mandir}/man8/vldb_check.* +%{_mandir}/man8/vlserver.* +%{_mandir}/man8/voldump.* +%{_mandir}/man8/volinfo.* +%{_mandir}/man8/volserver.* +#%{_mandir}/man8/vldb_convert.* + +%files authlibs +%defattr(-,root,root) +%{_libdir}/libafsauthent.so.* +%{_libdir}/libafsrpc.so.* + +%files authlibs-devel +%defattr(-,root,root) +%{_libdir}/libafsauthent.a +%{_libdir}/libafsauthent.so +%{_libdir}/libafsrpc.a +%{_libdir}/libafsrpc.so + +%files devel +%defattr(-,root,root) +%{_bindir}/rxgen +%{_includedir}/afs +%{_includedir}/des.h +%{_includedir}/des_conf.h +%{_includedir}/des_odd.h +%{_includedir}/des_prototypes.h +%{_includedir}/lock.h +%{_includedir}/lwp.h +%{_includedir}/mit-cpyright.h +%{_includedir}/potpourri.h +%{_includedir}/preempt.h +%{_includedir}/rx +%{_includedir}/timer.h +%{_includedir}/ubik.h +%{_includedir}/ubik_int.h +%{_libdir}/afs +%{_libdir}/libdes.a +%{_libdir}/liblwp.a +%{_libdir}/librx.a +%{_libdir}/librxkad.a +%{_libdir}/librxstat.a +%{_libdir}/libubik.a +%{_mandir}/man1/rxgen.* + +%files kernel-source +%defattr(-,root,root) +%{_prefix}/src/openafs-kernel-%{afsvers}/LICENSE.IBM +%{_prefix}/src/openafs-kernel-%{afsvers}/LICENSE.Sun +%{_prefix}/src/openafs-kernel-%{afsvers}/README +%{_prefix}/src/openafs-kernel-%{afsvers}/src + +%files compat +%defattr(-,root,root) +%{_prefix}/afsws + +%files kpasswd +%defattr(-,root,root) +%{_bindir}/kpasswd +%{_bindir}/kpwvalid + +%if %{krb5support} +%files krb5 +%defattr(-,root,root) +%{_bindir}/aklog +%{_sbindir}/asetkey +%{_sbindir}/ka-forwarder +%{_mandir}/man1/aklog.* +%{_mandir}/man8/asetkey.* +%endif + +%endif + +%if %{build_modules} + +%if %{up_package} +%files kernel +%defattr(-,root,root) +%{kxmoddir}/kernel/fs/openafs/openafs.* +%endif + +%if %{smp_package} +%files kernel-smp +%defattr(-,root,root) +%{kxmoddir}%{?smp_ext:%{smp_ext}}/kernel/fs/openafs/openafs.* +%endif + +%if %{largesmp_package} +%files kernel-largesmp +%defattr(-,root,root) +%{kxmoddir}%{?largesmp_ext:%{largesmp_ext}}/kernel/fs/openafs/openafs.* +%endif + +%if %{bigmem_package} +%files kernel-bigmem +%defattr(-,root,root) +%{kxmoddir}%{?bigmem_ext:%{bigmem_ext}}/kernel/fs/openafs/openafs.* +%endif + +%if %{hugemem_package} +%files kernel-hugemem +%defattr(-,root,root) +%{kxmoddir}%{?hugemem_ext:%{hugemem_ext}}/kernel/fs/openafs/openafs.* +%endif + +%endif + +############################################################################## +### +### openafs.spec change log +### +############################################################################## +%changelog +* Sun Aug 20 2006 Derrick Brashear 1.4.2-1 +- update to 1.4.2 +- use installed aklog manpage. +- moduleparam patch obsoleted. + +* Tue Apr 18 2006 Derek Atkins 1.4.1-2 +- fix the module_param_array macro for Linux 2.6.9. + +* Sat Apr 15 2006 Derek Atkins 1.4.1-1 +- update to 1.4.1 release. +- distribute asetkey from openafs instead of krb5-migration kit +- don't need to apply the FC5 patches because they are part of the distro. +- install asetkey into the "proper" place +- dont list a manpage twice. +- package asetkey man page. delete it when not needed. + +* Thu Apr 6 2006 Derek Atkins +- turn authlibs back on, because RT #18767 was applied to CVS. + +* Wed Mar 29 2006 Derek Atkins 1.4.1rc10-1 +- update to 1.4.1rc10, build on FC5 +- fix the man pages (distribute into various packages) +- include patches for FC5, RT #29112 and #29122 + +* Mon Dec 19 2005 Derek Atkins +- openafs-server shouldn't depend on the kernel module. + +* Thu Nov 17 2005 Derek Atkins +- patch from Mike Polek to run depmod for + the target kernel and not the running kernel. + +* Tue Nov 8 2005 Derek Atkins +- build aklog from the openafs sources, not from the krb5 migration kit. + +* Fri Nov 4 2005 Derek Atkins +- set openafs-kernel-source to Provide openafs-kernel + +* Thu Oct 20 2005 Derek Atkins 1.4.0-1 +- update afs-krb5 res_search patch: look for res_search and __res_search +- update to 1.4.0 final + +* Mon Oct 10 2005 Derek Atkins +- remove all kdump builds. + +* Thu Oct 6 2005 Derek Atkins +- fix openafs-kernel-version.sh so it will build an RPM for the + currently-running kernel even if it's smp on 2.6. + +* Tue Sep 27 2005 Derek Atkins 1.4.0rc5-1 +- upgrade to 1.4.0rc5 +- turn off authlibs packages + +* Fri Sep 23 2005 Derek Atkins 1.4.0rc4-2 +- add kmodule26 patch: fix the kernel module name on 2.6 kernels so + it's called "openafs" and not "libafs". This fixes the shutdown + problem. + +* Thu Sep 22 2005 Derek Atkins +- update kversis script, add 'kvers' operation +- fix bug that 2.6 smp/hugemem kernels don't provide + kernel-foo = %{kernvers} with 'smp', 'hugemem', etc. +- add patch to remove res_search from the afs-krb5 configure + +* Thu Sep 15 2005 Derek Atkins 1.4.0rc4-1 +- Update to 1.4.0rc4 +- Update the afs-krb5 krb524 patch so it actually works on + some older systems like RHEL3 that still need -lkrb524. +- Update the buildall script so choose better architecture support, + e.g. don't build i586 on RHEL. +- Update the rebuild information in the SPEC file. +- Add support for finding .EL kernels in openafs-kvers-is.sh +- Add additional error messages when kernel version/type parsing fails. +- Update the buildall script to use the kernel srcdir directly. + +* Wed Sep 14 2005 Derek Atkins 1.4.0rc3-2 +- Add "hugemem" to 2.4 configs +- Add checks to support scripts to determine whether to build + the bigmem and/or hugemem kernels for 2.4. + +* Mon Sep 12 2005 Derek Atkins 1.4.0rc3-1 +- Added some afs-krb5 patches to get the migration kit to build + on modern AFS and modern Kerberos. +- Added authlibs and authlibs-devel packages as per UMich changes. + +* Sun Sep 11 2005 Derek Atkins +- Merged in some of the 2.6 changes from wingc@engin.umich.edu + +* Sat Sep 10 2005 Derek Atkins +- Merged in lots of changes from David Howells and Nalin Dahyabhai + from Red Hat. Initial attempt at a release of 1.4. Still need + to work in a 2.6 build system. diff --git a/src/packaging/RedHat/openafs.sysconfig b/src/packaging/RedHat/openafs.sysconfig new file mode 100644 index 0000000000..08bac3ddb8 --- /dev/null +++ b/src/packaging/RedHat/openafs.sysconfig @@ -0,0 +1,5 @@ +# OpenAFS Client Configuration +AFSD_ARGS="-dynroot -fakestat" + +# OpenAFS Server Configuration +BOSSERVER_ARGS=