1#!/bin/sh 2# 3# Copyright (C) Shirish A Kalele 2000 4# 5# Builds a Samba package from the samba distribution. 6# By default, the package will be built to install samba in /usr/local 7# Change the INSTALL_BASE variable to change this: will modify the pkginfo 8# and samba.server files to point to the new INSTALL_BASE 9# 10INSTALL_BASE=/usr/local 11 12add_dynamic_entries() 13{ 14 # Add the binaries, docs and SWAT files 15 16 echo "#\n# Binaries \n#" 17 cd $DISTR_BASE/source/bin 18 for binfile in * 19 do 20 if [ -f $binfile ]; then 21 case $file in 22 CP*.so) 23 echo echo f none samba/lib/charset/$binfile=source/bin/$binfile 0755 root other 24 ;; 25 *) 26 echo f none samba/bin/$binfile=source/bin/$binfile 0755 root other 27 ;; 28 esac 29 fi 30 done 31 32 # Add the scripts to bin/ 33 echo "#\n# Scripts \n#" 34 cd $DISTR_BASE/source/script 35 for shfile in * 36 do 37 if [ -f $shfile ]; then 38 echo f none samba/bin/$shfile=source/script/$shfile 0755 root other 39 fi 40 done 41 42 # add libraries to /lib for winbind 43 echo "#\n# Libraries \n#" 44 if [ -f $DISTR_BASE/source/nsswitch/libnss_winbind.so ] ; then 45 echo f none /usr/lib/libnss_winbind.so=source/nsswitch/libnss_winbind.so 0755 root other 46 echo s none /usr/lib/libnss_winbind.so.1=/usr/lib/libnss_winbind.so 0755 root other 47 echo s none /usr/lib/libnss_winbind.so.2=/usr/lib/libnss_winbind.so 0755 root other 48 echo s none /usr/lib/nss_winbind.so.1=/usr/lib/libnss_winbind.so 0755 root other 49 echo s none /usr/lib/nss_winbind.so.2=/usr/lib/libnss_winbind.so 0755 root other 50 fi 51 52 # add the .dat codepages 53 echo "#\n# Codepages \n#" 54 for file in $DISTR_BASE/source/codepages/*.dat ; do 55 bfile=`basename $file` 56 echo f none /usr/local/samba/lib/$bfile=source/codepages/$bfile 57 done 58 59 # Add the manpages 60 echo "#\n# man pages \n#" 61 echo d none /usr ? ? ? 62 echo d none /usr/share ? ? ? 63 echo d none /usr/share/man ? ? ? 64 65 # Create directories for man page sections if nonexistent 66 cd $DISTR_BASE/docs/manpages 67 for i in 1 2 3 4 5 6 7 8 9 68 do 69 manpages=`ls *.$i 2>/dev/null` 70 if [ $? -eq 0 ] 71 then 72 echo d none /usr/share/man/man$i ? ? ? 73 for manpage in $manpages 74 do 75 echo f none /usr/share/man/man${i}/${manpage}=docs/manpages/$manpage 0644 root other 76 done 77 fi 78 done 79 80 echo "#\n# HTML documentation \n#" 81 cd $DISTR_BASE 82 list=`find docs/htmldocs -type d | grep -v "/CVS$"` 83 for docdir in $list 84 do 85 if [ -d $docdir ]; then 86 echo d none samba/$docdir 0755 root other 87 fi 88 done 89 90 list=`find docs/htmldocs -type f | grep -v /CVS/` 91 for htmldoc in $list 92 do 93 if [ -f $htmldoc ]; then 94 echo f none samba/$htmldoc=$htmldoc 0644 root other 95 fi 96 done 97 98 # Create a symbolic link to the Samba book in docs/ for beginners 99 echo 's none samba/docs/samba_book=htmldocs/using_samba' 100 101 echo "#\n# SWAT \n#" 102 cd $DISTR_BASE 103 list=`find swat -type d | grep -v "/CVS$"` 104 for i in $list 105 do 106 echo "d none samba/$i 0755 root other" 107 done 108 list=`find swat -type f | grep -v /CVS/` 109 for i in $list 110 do 111 echo "f none samba/$i=$i 0644 root other" 112 done 113 # add the .msg files for SWAT 114 echo "#\n# msg files \n#" 115 for file in $DISTR_BASE/source/po/*.msg ; do 116 bfile=`basename $file` 117 echo f none /usr/local/samba/lib/$bfile=source/po/$bfile 118 done 119 120 echo "#\n# HTML documentation for SWAT\n#" 121 cd $DISTR_BASE/docs/htmldocs 122 for htmldoc in * 123 do 124 if [ -f $htmldoc ]; then 125 echo f none samba/swat/help/$htmldoc=docs/htmldocs/$htmldoc 0644 root other 126 fi 127 done 128 129 echo "#\n# Using Samba Book files for SWAT\n#" 130 cd $DISTR_BASE/docs/htmldocs 131 132# set up a symbolic link instead of duplicating the book tree 133 echo 's none samba/swat/using_samba=../docs/htmldocs/using_samba' 134 135} 136 137if [ $# = 0 ] 138then 139 # Try to guess the distribution base.. 140 CURR_DIR=`pwd` 141 DISTR_BASE=`echo $CURR_DIR | sed 's|\(.*\)/packaging.*|\1|'` 142 echo "Assuming Samba distribution is rooted at $DISTR_BASE.." 143else 144 DISTR_BASE=$1 145fi 146 147# 148if [ ! -d $DISTR_BASE ]; then 149 echo "Source build directory $DISTR_BASE does not exist." 150 exit 1 151fi 152 153# Set up the prototype file from prototype.master 154if [ -f prototype ]; then 155 rm prototype 156fi 157 158# Setup version from version.h 159VERSION=PVERSION 160sed -e "s|__VERSION__|$VERSION|" -e "s|__ARCH__|`uname -p`|" -e "s|__BASEDIR__|$INSTALL_BASE|g" pkginfo.master >pkginfo 161 162sed -e "s|__BASEDIR__|$INSTALL_BASE|g" inetd.conf.master >inetd.conf 163sed -e "s|__BASEDIR__|$INSTALL_BASE|g" samba.server.master >samba.server 164 165cp prototype.master prototype 166 167# Add the dynamic part to the prototype file 168(add_dynamic_entries >> prototype) 169 170# Create the package 171pkgmk -o -d /tmp -b $DISTR_BASE -f prototype 172if [ $? = 0 ] 173then 174 pkgtrans /tmp samba.pkg samba 175fi 176echo The samba package is in /tmp 177