oracle.spec 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  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: 20040413
  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}/libexec/oracle-barebone \
  91. %{l_prefix}/share/oracle-barebone \
  92. $owner_dir \
  93. /oracle \
  94. /home/oracle \
  95. /export/oracle \
  96. /usr/oracle \
  97. /usr/local/oracle \
  98. /opt/oracle \
  99. /opt/local/oracle \
  100. /app/oracle \
  101. /u01/app/oracle \
  102. /u02/app/oracle \
  103. /u03/app/oracle \
  104. /u04/app/oracle
  105. do
  106. if [ -d $dir ]; then
  107. l_oracle_base="$dir"
  108. break
  109. fi
  110. done
  111. if [ ".$l_oracle_base" = .none ]; then
  112. ( echo "ORACLE_BASE directory not found on system."
  113. echo "Please provide correct path with option with_oracle_base."
  114. ) | %{l_rpmtool} msg -b -t error
  115. exit 1
  116. fi
  117. else
  118. if [ ! -d "$l_oracle_base" ]; then
  119. ( echo "ORACLE_BASE directory \"$l_oracle_base\" not existing."
  120. echo "Please provide correct path with option with_oracle_base."
  121. ) | %{l_rpmtool} msg -b -t error
  122. exit 1
  123. fi
  124. fi
  125. # determine ORACLE home directory ($ORACLE_HOME)
  126. l_oracle_home="%{with_oracle_home}"
  127. if [ ".$l_oracle_home" = .none ]; then
  128. for dir in $l_oracle_base/product/[0-9]* $l_oracle_base/product $l_oracle_base; do
  129. if [ -d "$dir/rdbms" ]; then
  130. l_oracle_home="$dir"
  131. break
  132. fi
  133. done
  134. if [ ".$l_oracle_home" = .none ]; then
  135. ( echo "ORACLE_HOME directory not found on system."
  136. echo "Please provide correct path with option with_oracle_home."
  137. ) | %{l_rpmtool} msg -b -t error
  138. exit 1
  139. fi
  140. else
  141. if [ ! -d "$l_oracle_home" ]; then
  142. ( echo "ORACLE_HOME directory \"$l_oracle_base\" not existing."
  143. echo "Please provide correct path with option with_oracle_home."
  144. ) | %{l_rpmtool} msg -b -t error
  145. exit 1
  146. fi
  147. if [ ! -d "$l_oracle_home/rdbms" ]; then
  148. ( echo "ORACLE_HOME directory \"$l_oracle_home\" does not contain \"rdbms\ subdirectory."
  149. echo "Please provide correct path with option with_oracle_home."
  150. ) | %{l_rpmtool} msg -b -t error
  151. exit 1
  152. fi
  153. fi
  154. # determine ORACLE C header directory
  155. l_oracle_incdir="%{with_oracle_incdir}"
  156. if [ ".$l_oracle_incdir" = .none ]; then
  157. for dir in $l_oracle_home/rdbms $l_oracle_home; do
  158. file=`find $dir -type f -name "oratypes.h" -print 2>/dev/null | head -1`
  159. if [ ".$file" != . ]; then
  160. if [ -f "$file" ]; then
  161. l_oracle_incdir=`echo $file | sed -e 's;/oratypes\.h$;;'`
  162. break
  163. fi
  164. fi
  165. done
  166. if [ ".$l_oracle_incdir" = .none ]; then
  167. ( echo "ORACLE C include directory not found on system."
  168. echo "Please provide correct path with option with_oracle_incdir."
  169. ) | %{l_rpmtool} msg -b -t error
  170. exit 1
  171. fi
  172. else
  173. if [ ! -d "$l_oracle_incdir" ]; then
  174. ( echo "ORACLE C include directory \"$l_oracle_incdir\" not existing."
  175. echo "Please provide correct path with option with_oracle_incdir."
  176. ) | %{l_rpmtool} msg -b -t error
  177. exit 1
  178. fi
  179. if [ ! -f "$l_oracle_incdir/oratypes.h" ]; then
  180. ( echo "ORACLE C include directory \"$l_oracle_incdir\" does not contain \"oratypes.h\ header."
  181. echo "Please provide correct path with option with_oracle_incdir."
  182. ) | %{l_rpmtool} msg -b -t error
  183. exit 1
  184. fi
  185. fi
  186. # determine ORACLE C library directory
  187. l_oracle_libdir="%{with_oracle_libdir}"
  188. if [ ".$l_oracle_libdir" = .none ]; then
  189. for dir in $l_oracle_home/lib32 $l_oracle_home/lib $l_oracle_home/*/lib32 $l_oracle_home/*/lib; do
  190. file=`find $dir -type f -name "sysliblist" -print 2>/dev/null | head -1`
  191. if [ ".$file" != . ]; then
  192. if [ -f "$file" ]; then
  193. l_oracle_libdir=`echo $file | sed -e 's;/sysliblist$;;'`
  194. break
  195. fi
  196. fi
  197. done
  198. if [ ".$l_oracle_libdir" = .none ]; then
  199. ( echo "ORACLE C library directory not found on system."
  200. echo "Please provide correct path with option with_oracle_libdir."
  201. ) | %{l_rpmtool} msg -b -t error
  202. exit 1
  203. fi
  204. else
  205. if [ ! -d "$l_oracle_libdir" ]; then
  206. ( echo "ORACLE C library directory \"$l_oracle_libdir\" not existing."
  207. echo "Please provide correct path with option with_oracle_libdir."
  208. ) | %{l_rpmtool} msg -b -t error
  209. exit 1
  210. fi
  211. if [ ! -f "$l_oracle_libdir/sysliblist" ]; then
  212. ( echo "ORACLE C library directory \"$l_oracle_libdir\" does not contain \"sysliblist\" file."
  213. echo "Please provide correct path with option with_oracle_libdir."
  214. ) | %{l_rpmtool} msg -b -t error
  215. exit 1
  216. fi
  217. fi
  218. # determine ORACLE client build flags
  219. l_oracle_cflags="-I$l_oracle_incdir"
  220. l_oracle_incdir_public=`echo $l_oracle_incdir | sed -e 's;/[^/]*$;/public;'`
  221. if [ -d "$l_oracle_incdir_public" ]; then
  222. l_oracle_cflags="$l_oracle_cflags -I$l_oracle_incdir_public"
  223. fi
  224. l_oracle_ldflags="-L$l_oracle_libdir -Wl,-R$l_oracle_libdir"
  225. if [ -d "${l_oracle_libdir}32" ]; then
  226. l_oracle_ldflags="-L${l_oracle_libdir}32 -Wl,-R${l_oracle_libdir}32 $l_oracle_ldflags"
  227. fi
  228. l_oracle_libs="-lclntsh"
  229. if [ -f "$l_oracle_libdir/libwtc9.so" ]; then
  230. l_oracle_libs="$l_oracle_libs -lwtc9"
  231. fi
  232. # install rc file
  233. %{l_shtool} mkdir -f -p -m 755 \
  234. $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d
  235. %{l_shtool} install -c -m 755 %{l_value -s -a} \
  236. -e "s;@l_oracle_owner@;${l_oracle_owner};g" \
  237. -e "s;@l_oracle_base@;${l_oracle_base};g" \
  238. -e "s;@l_oracle_home@;${l_oracle_home};g" \
  239. -e "s;@l_oracle_incdir@;${l_oracle_incdir};g" \
  240. -e "s;@l_oracle_libdir@;${l_oracle_libdir};g" \
  241. -e "s;@l_oracle_cflags@;${l_oracle_cflags};g" \
  242. -e "s;@l_oracle_ldflags@;${l_oracle_ldflags};g" \
  243. -e "s;@l_oracle_libs@;${l_oracle_libs};g" \
  244. %{SOURCE rc.oracle} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
  245. %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std}
  246. %files -f files
  247. %clean
  248. rm -rf $RPM_BUILD_ROOT