2a46321f81890f66b554e583533e16c7c3adb4cc
[ira/wip.git] / packaging / Solaris / makepkg.sh.tmpl
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 #
10 INSTALL_BASE=/usr/local
11
12 add_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
137 if [ $# = 0 ]
138 then
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.."
143 else
144         DISTR_BASE=$1
145 fi
146
147 #
148 if [ ! -d $DISTR_BASE ]; then
149         echo "Source build directory $DISTR_BASE does not exist."
150         exit 1
151 fi
152
153 # Set up the prototype file from prototype.master
154 if [ -f prototype ]; then
155         rm prototype
156 fi
157
158 # Setup version from version.h
159 VERSION=PVERSION
160 sed -e "s|__VERSION__|$VERSION|" -e "s|__ARCH__|`uname -p`|" -e "s|__BASEDIR__|$INSTALL_BASE|g" pkginfo.master >pkginfo
161
162 sed -e "s|__BASEDIR__|$INSTALL_BASE|g" inetd.conf.master >inetd.conf
163 sed -e "s|__BASEDIR__|$INSTALL_BASE|g" samba.server.master >samba.server
164
165 cp prototype.master prototype
166
167 # Add the dynamic part to the prototype file
168 (add_dynamic_entries >> prototype)
169
170 # Create the package
171 pkgmk -o -d /tmp -b $DISTR_BASE -f prototype
172 if [ $? = 0 ]
173 then
174         pkgtrans /tmp samba.pkg samba
175 fi
176 echo The samba package is in /tmp