nixpkgs/pkgs/servers/sql/oracle-xe/default.nix
John Wiegley 28b6fb61e6 Change occurrences of gcc to the more general cc
This is done for the sake of Yosemite, which does not have gcc, and yet
this change is also compatible with Linux.
2014-12-26 11:06:21 -06:00

84 lines
2.2 KiB
Nix

{ stdenv, makeWrapper, requireFile, patchelf, rpmextract, libaio }:
assert stdenv.system == "x86_64-linux";
with stdenv.lib;
stdenv.mkDerivation rec {
name = "oracle-xe-${version}";
version = "11.2.0";
src = requireFile {
name = "${name}-1.0.x86_64.rpm";
sha256 = "0s2jj2xn56v5ys6hxb7l7045hw9c1mm1lhj4p2fvqbs02kqchab6";
url = "http://www.oracle.com/technetwork/"
+ "products/express-edition/downloads/";
};
buildInputs = [ makeWrapper ];
unpackCmd = ''
(mkdir -p "${name}" && cd "${name}" &&
${rpmextract}/bin/rpmextract "$curSrc")
'';
buildPhase = let
libs = makeLibraryPath [ libaio ];
in ''
basedir="u01/app/oracle/product/${version}/xe"
cat > "$basedir/network/admin/listener.ora" <<SQL
# listener.ora Network Configuration File:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = ''${out}/libexec/oracle)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
(ADDRESS = (PROTOCOL = TCP)(HOST = %hostname%)(PORT = %port%))
)
)
DEFAULT_SERVICE_LISTENER = (XE)
SQL
find u01 \
\( -name '*.sh' \
-o -path "$basedir/bin/*" \
\) -print -exec "${patchelf}/bin/patchelf" \
--interpreter "$(cat "$NIX_CC/nix-support/dynamic-linker")" \
--set-rpath "${libs}:$out/libexec/oracle/lib" \
--force-rpath '{}' \;
'';
dontStrip = true;
dontPatchELF = true;
installPhase = ''
mkdir -p "$out/libexec"
cp -r "u01/app/oracle/product/${version}/xe" "$out/libexec/oracle"
for i in "$out/libexec/oracle/bin"/*; do
makeWrapper "$i" "$out/bin/''${i##*/}" \
--set ORACLE_HOME "$out/libexec/oracle" \
--set ORACLE_SID XE \
--set NLS_LANG '$("'"$out"'/libexec/oracle/bin/nls_lang.sh")' \
--prefix PATH : "$out/libexec/oracle/bin"
done
'';
meta = {
description = "Oracle Database Express Edition";
homepage = "http://www.oracle.com/technetwork/products/express-edition/";
license = licenses.unfree;
};
}