oracle.spec 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. ##
  2. ## oracle.spec -- OpenPKG RPM Specification
  3. ## Copyright (c) 2000-2004 The OpenPKG Project <http://www.openpkg.org/>
  4. ## Copyright (c) 2000-2004 Ralf S. Engelschall <rse@engelschall.com>
  5. ## Copyright (c) 2000-2004 Cable & Wireless <http://www.cw.com/>
  6. ##
  7. ## Permission to use, copy, modify, and distribute this software for
  8. ## any purpose with or without fee is hereby granted, provided that
  9. ## the above copyright notice and this permission notice appear in all
  10. ## copies.
  11. ##
  12. ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  13. ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  14. ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  15. ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
  16. ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  17. ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  18. ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  19. ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  20. ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  21. ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  22. ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  23. ## SUCH DAMAGE.
  24. ##
  25. # package information
  26. Name: oracle
  27. Summary: Information Resource for ORACLE
  28. URL: -
  29. Vendor: The OpenPKG Project
  30. Packager: The OpenPKG Project
  31. Distribution: OpenPKG
  32. Class: EVAL
  33. Group: Meta
  34. License: PD
  35. Version: 0
  36. Release: 20040218
  37. # package options
  38. %option with_oracle_owner none
  39. %option with_oracle_base none
  40. %option with_oracle_home none
  41. %option with_oracle_incdir none
  42. %option with_oracle_libdir none
  43. # list of sources
  44. Source0: rc.oracle
  45. # build information
  46. Prefix: %{l_prefix}
  47. BuildRoot: %{l_buildroot}
  48. BuildPreReq: OpenPKG, openpkg >= 20040130
  49. PreReq: OpenPKG, openpkg >= 20040130
  50. AutoReq: no
  51. AutoReqProv: no
  52. Provides: ORACLE
  53. %description
  54. This is the information resource package for ORACLE.
  55. %track
  56. prog oracle = {
  57. disabled
  58. comment = "just a meta package without external sources"
  59. version = 0
  60. url = http://www.example.com/
  61. regex = oracle.tar.gz
  62. }
  63. %prep
  64. %build
  65. %install
  66. rm -rf $RPM_BUILD_ROOT
  67. # determine ORACLE_OWNER
  68. l_oracle_owner="%{with_oracle_owner}"
  69. if [ ".$l_oracle_owner" = .none ]; then
  70. for user in oracle ora; do
  71. pw=`(cat /etc/passwd; ypcat passwd) 2>/dev/null | grep "^$user:" | head -1`
  72. if [ ".$pw" != . ]; then
  73. l_oracle_owner="$user"
  74. break
  75. fi
  76. done
  77. fi
  78. # determine ORACLE base directory ($ORACLE_BASE)
  79. l_oracle_base="%{with_oracle_base}"
  80. owner_dir="/oracle"
  81. if [ ".$l_oracle_owner" != .none ]; then
  82. dir=`(cat /etc/passwd; ypcat passwd) 2>/dev/null | grep "^$l_oracle_owner:" |\
  83. head -1 | sed -e 's;^.*:\([^:][^:]*\):[^:]*$;\1;' | sed -e 's;^[^/].*$;;'`
  84. if [ ".$dir" != . ]; then
  85. owner_dir="$dir"
  86. fi
  87. fi
  88. if [ ".$l_oracle_base" = .none ]; then
  89. for dir in \
  90. %{l_prefix}/share/oracle-barebone \
  91. $owner_dir \
  92. /oracle \
  93. /home/oracle \
  94. /export/oracle \
  95. /usr/oracle \
  96. /usr/local/oracle \
  97. /opt/oracle \
  98. /opt/local/oracle \
  99. /app/oracle \
  100. /u01/app/oracle \
  101. /u02/app/oracle \
  102. /u03/app/oracle \
  103. /u04/app/oracle
  104. do
  105. if [ -d $dir ]; then
  106. l_oracle_base="$dir"
  107. break
  108. fi
  109. done
  110. if [ ".$l_oracle_base" = .none ]; then
  111. ( echo "ORACLE_BASE directory not found on system."
  112. echo "Please provide correct path with option with_oracle_base."
  113. ) | %{l_rpmtool} msg -b -t error
  114. exit 1
  115. fi
  116. else
  117. if [ ! -d "$l_oracle_base" ]; then
  118. ( echo "ORACLE_BASE directory \"$l_oracle_base\" not existing."
  119. echo "Please provide correct path with option with_oracle_base."
  120. ) | %{l_rpmtool} msg -b -t error
  121. exit 1
  122. fi
  123. fi
  124. # determine ORACLE home directory ($ORACLE_HOME)
  125. l_oracle_home="%{with_oracle_home}"
  126. if [ ".$l_oracle_home" = .none ]; then
  127. for dir in $l_oracle_base/product/[0-9]* $l_oracle_base/product $l_oracle_base; do
  128. if [ -d "$dir/rdbms" ]; then
  129. l_oracle_home="$dir"
  130. break
  131. fi
  132. done
  133. if [ ".$l_oracle_home" = .none ]; then
  134. ( echo "ORACLE_HOME directory not found on system."
  135. echo "Please provide correct path with option with_oracle_home."
  136. ) | %{l_rpmtool} msg -b -t error
  137. exit 1
  138. fi
  139. else
  140. if [ ! -d "$l_oracle_home" ]; then
  141. ( echo "ORACLE_HOME directory \"$l_oracle_base\" not existing."
  142. echo "Please provide correct path with option with_oracle_home."
  143. ) | %{l_rpmtool} msg -b -t error
  144. exit 1
  145. fi
  146. if [ ! -d "$l_oracle_home/rdbms" ]; then
  147. ( echo "ORACLE_HOME directory \"$l_oracle_home\" does not contain \"rdbms\ subdirectory."
  148. echo "Please provide correct path with option with_oracle_home."
  149. ) | %{l_rpmtool} msg -b -t error
  150. exit 1
  151. fi
  152. fi
  153. # determine ORACLE C header directory
  154. l_oracle_incdir="%{with_oracle_incdir}"
  155. if [ ".$l_oracle_incdir" = .none ]; then
  156. for dir in $l_oracle_home/rdbms $l_oracle_home; do
  157. file=`find $dir -type f -name "oratypes.h" -print 2>/dev/null | head -1`
  158. if [ ".$file" != . ]; then
  159. if [ -f "$file" ]; then
  160. l_oracle_incdir=`echo $file | sed -e 's;/oratypes\.h$;;'`
  161. break
  162. fi
  163. fi
  164. done
  165. if [ ".$l_oracle_incdir" = .none ]; then
  166. ( echo "ORACLE C include directory not found on system."
  167. echo "Please provide correct path with option with_oracle_incdir."
  168. ) | %{l_rpmtool} msg -b -t error
  169. exit 1
  170. fi
  171. else
  172. if [ ! -d "$l_oracle_incdir" ]; then
  173. ( echo "ORACLE C include directory \"$l_oracle_incdir\" not existing."
  174. echo "Please provide correct path with option with_oracle_incdir."
  175. ) | %{l_rpmtool} msg -b -t error
  176. exit 1
  177. fi
  178. if [ ! -f "$l_oracle_incdir/oratypes.h" ]; then
  179. ( echo "ORACLE C include directory \"$l_oracle_incdir\" does not contain \"oratypes.h\ header."
  180. echo "Please provide correct path with option with_oracle_incdir."
  181. ) | %{l_rpmtool} msg -b -t error
  182. exit 1
  183. fi
  184. fi
  185. # determine ORACLE C library directory
  186. l_oracle_libdir="%{with_oracle_libdir}"
  187. if [ ".$l_oracle_libdir" = .none ]; then
  188. for dir in $l_oracle_home/lib32 $l_oracle_home/lib $l_oracle_home/*/lib32 $l_oracle_home/*/lib; do
  189. file=`find $dir -type f -name "sysliblist" -print 2>/dev/null | head -1`
  190. if [ ".$file" != . ]; then
  191. if [ -f "$file" ]; then
  192. l_oracle_libdir=`echo $file | sed -e 's;/sysliblist$;;'`
  193. break
  194. fi
  195. fi
  196. done
  197. if [ ".$l_oracle_libdir" = .none ]; then
  198. ( echo "ORACLE C library directory not found on system."
  199. echo "Please provide correct path with option with_oracle_libdir."
  200. ) | %{l_rpmtool} msg -b -t error
  201. exit 1
  202. fi
  203. else
  204. if [ ! -d "$l_oracle_libdir" ]; then
  205. ( echo "ORACLE C library directory \"$l_oracle_libdir\" not existing."
  206. echo "Please provide correct path with option with_oracle_libdir."
  207. ) | %{l_rpmtool} msg -b -t error
  208. exit 1
  209. fi
  210. if [ ! -f "$l_oracle_libdir/sysliblist" ]; then
  211. ( echo "ORACLE C library directory \"$l_oracle_libdir\" does not contain \"sysliblist\" file."
  212. echo "Please provide correct path with option with_oracle_libdir."
  213. ) | %{l_rpmtool} msg -b -t error
  214. exit 1
  215. fi
  216. fi
  217. # determine ORACLE client build flags
  218. l_oracle_cflags="-I$l_oracle_incdir"
  219. l_oracle_incdir_public=`echo $l_oracle_incdir | sed -e 's;/[^/]*$;/public;'`
  220. if [ -d "$l_oracle_incdir_public" ]; then
  221. l_oracle_cflags="$l_oracle_cflags -I$l_oracle_incdir_public"
  222. fi
  223. l_oracle_ldflags="-L$l_oracle_libdir"
  224. if [ -d "${l_oracle_libdir}32" ]; then
  225. l_oracle_ldflags="-L${l_oracle_libdir}32 $l_oracle_ldflags"
  226. fi
  227. l_oracle_libs="-lclntsh"
  228. if [ -f "$l_oracle_libdir/libwtc9.so" ]; then
  229. l_oracle_libs="$l_oracle_libs -lwtc9"
  230. fi
  231. # install rc file
  232. %{l_shtool} mkdir -f -p -m 755 \
  233. $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d
  234. %{l_shtool} install -c -m 755 %{l_value -s -a} \
  235. -e "s;@l_oracle_owner@;${l_oracle_owner};g" \
  236. -e "s;@l_oracle_base@;${l_oracle_base};g" \
  237. -e "s;@l_oracle_home@;${l_oracle_home};g" \
  238. -e "s;@l_oracle_incdir@;${l_oracle_incdir};g" \
  239. -e "s;@l_oracle_libdir@;${l_oracle_libdir};g" \
  240. -e "s;@l_oracle_cflags@;${l_oracle_cflags};g" \
  241. -e "s;@l_oracle_ldflags@;${l_oracle_ldflags};g" \
  242. -e "s;@l_oracle_libs@;${l_oracle_libs};g" \
  243. %{SOURCE rc.oracle} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
  244. %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std}
  245. %files -f files
  246. %clean
  247. rm -rf $RPM_BUILD_ROOT