#!/bin/sh
# @(#) 7276.7659

test `uname -s` = Linux && echocmd="echo -e" || echocmd="echo"

yorn ()
{
        YN=b
        while [ "$YN" != "n" -a "$YN" != "no" -a \
                "$YN" != "N" -a "$YN" != "NO" -a \
                "$YN" != "y" -a "$YN" != "yes" -a \
                "$YN" != "Y" -a "$YN" != "YES" -a \
                "$YN" != "Yes" -a "$YN" != "No" ]; do
                $echocmd $1
                read YN
                if [ "$YN" = "y" -o "$YN" = "yes" -o "$YN" = "Yes" -o \
                     "$YN" = "Y" -o "$YN" = "YES" ]; then
                        return 1
                fi
                if [ "$YN" = "n" -o "$YN" = "no" -o "$YN" = "No" -o \
                     "$YN" = "N" -o "$YN" = "NO" ]; then
                        return 0
                fi
                $echocmd "y または n を入力してください"
        done
}

cont ()
{
        yorn "処理を続けますか (y/n): \c"
        res=$?
        if [ "$res" != "1" ]; then
                exit 0
        fi
}

sep ()
{
$echocmd
$echocmd '--------------------------------------------------------------------------------'
}

set_java_version()
{
  sep
  yorn "COBOL と Java を連携して使用しますか ? (y/n): \c"
  if test $? -eq 1
  then
	sh $COBDIR/bin/java_setup
	else
		$echocmd "Java セットアップをスキップします。"
		# CK changed the comment for J product
		$echocmd "このセットアップを後で行い Java を COBOL と連携して"
		$echocmd "使うため Java のバージョンを選択するには"
		$echocmd "スーパーユーザで次のコマンドを実行してください:"
		$echocmd "  cd $COBDIR; sh ./bin/java_setup"
		cd ${OLDPWD}
		return 0
  fi
}

SCCSid="@(#) install 5.0"

umask 000

#default PATH for COBDIR
DEFCOBDIR=/opt/microfocus/cobol
DEFBIN=/opt/microfocus/bin

BASE=`pwd`
COBDIR=$BASE

if test ! -w /etc/passwd
then
	$echocmd "root でなければこのスクリプトは実行できません"
	exit 1
fi

if [ -f "$COBDIR/etc/mfreg.dat" ]; then
	$echocmd "このディレクトリの製品のインストールは既に実行済みです。"
	$echocmd "この操作は無効なので中止します..."
	exit 1
fi

unset COBPATH
unset COBDATA

COBSW=""
export COBSW

$echocmd
$echocmd "このスクリプトは Micro Focus Server 5.0 をインストールします。"
$echocmd
$echocmd "このリリースには、この製品に関する重要な情報を記述した 2 個のファイ"
$echocmd "ルが含まれています。まず一つめ(cpi.htm)は、このリリースで改修された"
$echocmd "問題のリストを記載した CPI(Corrected Product Incident:製品の改修"
$echocmd "された不具合)です。二つめ(readme.txt)は、新しい機能、拡張機能"
$echocmd "および制限事項の詳細を記述したものです。これらのファイルは"
$echocmd "次の場所にあります :"
$echocmd
$echocmd "     $COBDIR/docs"
$echocmd
$echocmd "インストール終了後に、これらのファイルを読むことをお勧めします。"
$echocmd
cont

if test ! -f /tmp/mf_lic_acpt
then
sep
$echocmd "このソフトウェア製品をインストールしてご使用になる前に、この"
$echocmd "製品に同封のエンドユーザ使用許諾契約 (以下「使用許諾契約」"
$echocmd "という) の条項に拘束されることに同意する必要があります。"
$echocmd "使用許諾契約は必ずお読みください。"
$echocmd "使用許諾契約にご同意いただけない場合は、"
$echocmd "未使用の製品をご購入の窓口担当へご返品ください。"
$echocmd "お支払いいただいた代金はご返金いたします。"
$echocmd "最新の使用許諾契約が必要な場合はインストール処理を"
$echocmd "実行する前にご購入の窓口担当までご連絡ください。"
$echocmd
yorn "使用許諾契約の条件に同意しますか? (y/n): \c"
clk_ans=$?
if [ "$clk_ans" != "1" ]; then
$echocmd "ライセンス条件を承諾されて、インストールを再開する場合には"
$echocmd "この製品のインストールが完全ではないので、削除しておくこと"
$echocmd "をお勧めします。"
exit 0
fi
else
rm /tmp/mf_lic_acpt
sep
fi

if [ "$1" != "noplatformcheck" ]; then
osname=`uname -s`
if [ ".$osname" = "." ]; then
osname=unknown
fi
oslevel=`uname -r 2>/dev/null`
if [ ".$oslevel" = "." ]; then
oslevel=unknown
fi
grep "$osname $oslevel" $COBDIR/docs/env.txt >/dev/null 2>&1
rc=$?
if [ "$rc" != "0" ]; then
sep
$echocmd "                Micro Focus インストール"
$echocmd
$echocmd "この製品はご使用のオペレーティングシステムのバージョンではビルドまたテスト"
$echocmd "されていません。サポートバージョンは docs/env.txt に記載されています。"
$echocmd
yorn "このままインストールを続けますか? (y/n): \c"
decision=$?
if [ "$decision" != "1" ]; then
$echocmd "インストールを中止します。"
exit 98
fi
fi
builtchip=sparc
chipname=`uname -p 2>/dev/null`
if [ ".$chipname" = "." ]; then
chipname=unknown
fi
if [ "$chipname" != "$builtchip" ]; then
sep
$echocmd
$echocmd "                Micro Focus インストール"
$echocmd
$echocmd "ご使用のマシンのチップタイプ ($chipname) は、この製品が"
$echocmd "作成された対象 ($builtchip) と異なります。"
$echocmd
$echocmd "インストールを中止します。"
$echocmd
exit 99
fi
fi

export COBDIR
cd $COBDIR

# restored for jpn products -- confirmed by JK 2004/06/01
sep
$echocmd "RETURN キーを押すと、動作保証環境(およびその互換の環境)の"
$echocmd "詳細が表示されます。"
$echocmd
$echocmd "準備ができたら RETURN キーを押してください。: \c"
read ready
$echocmd
more docs/env.txt
$echocmd
$echocmd "上記の動作保証環境の内容をご理解いただけ"
yorn "ますか (y/n): \c"
env_ans=$?
if [ "$env_ans" != "1" ]; then
$echocmd "お客様の要求によりインストールを中止しました。"
exit 0
fi

LD_LIBRARY_PATH=$COBDIR/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
SHLIB_PATH=$COBDIR/lib:$SHLIB_PATH
export SHLIB_PATH
LIBPATH=$COBDIR/lib:$LIBPATH
export LIBPATH

bin/cobconvstrtest -s
case $? in
        0)      ;;
        1)      sep
		$echocmd "Unicode テーブルが不完全です。J2EE および Web サービス"
		$echocmd "には Unicode が必要なため、これらのトランザクションは"
		$echocmd "正しく機能しない可能性があります。"
		$echocmd
		yorn "よろしいですか (y/n): \c" 
                ;;
esac

if test ! -f etc/cobver
then
	sep
	$echocmd "この製品をインストールするには COBOL システムが存在している必要があります。"
	exit 1
fi

trap "trap "" 0;$echocmd '\n\nインストールは中止されました。'; exit 1" 2 3 14 15

set -e
trap "$echocmd '\nインストールエラーです。\nディスクの空き容量/権限をチェックし、再実行してください'; exit 1" 0


DEFLIBDIR=$BASE/lib
lib_update=no
if test -d $DEFLIBDIR
then
        cd $DEFLIBDIR
        for shlib in `ls lib*.so.? 2> /dev/null`
        do
                if test -f $BASE/cobtmp/lib/$shlib*
                then
                        lib_update=yes
                fi
        done
fi
if test $lib_update = yes
then
	$echocmd
        yorn "既存の共有ライブラリを保存しますか? \nこれらのファイルは更新されます (y/n): \c"
        save_shlibs=$?
        case $save_shlibs in
        1)  SAVDIR=
                while test ".$SAVDIR" = "."
                do
                        $echocmd
                        $echocmd "ライブラリを保存するフルパス名を入力して"
                        $echocmd "ください。"
                        $echocmd
		        $echocmd "保存先のパス名を入力してください。\nまたはデフォルトのパス ($DEFLIBDIR) \nを使用するには RETURN キーを、終了するには q を、入力してください : \c"
			read SAVDIR
                        if test "$SAVDIR" = "q"
                        then
                                $echocmd "\nお客様の要求によりインストールを中止しました。"
                                trap "" 0
                                exit 1
                        fi
                        SAVDIR=`eval $echocmd $SAVDIR`
                        if test "$SAVDIR." = "."
                        then
                                SAVDIR=$DEFLIBDIR
                        fi
                        if expr "$SAVDIR" : '[^\/]' > /dev/null
                        then
                                $echocmd "'/' で始まる絶対パス名を入力してください。"
                                SAVDIR=
                                continue
                        fi
                        if test ! -d "$SAVDIR"
                        then
                                yorn "$SAVDIR ディレクトリは存在しません。\n作成しますか ? (y/n): \c"
                                y=$?
                                case "$y" in
                                        1)  mkdir $SAVDIR
                                                chmod 755 $SAVDIR
                                                ;;
                                        *)      SAVDIR=
                                                ;;
                                esac
                                continue
                        fi
                        if test ! -w "$SAVDIR"
                        then
                                $echocmd "$SAVDIR に書き込めません。"
                                SAVDIR=
                        fi
                done

                verno=`$echocmd | grep cobol $COBDIR/cobver | \
                sed -e "s/\(cobol v\)\(.\)\.\(.\)\(\..*\)/\2\3/"`
                revno=`$echocmd | grep PRN $COBDIR/cobver | cut -d. -f4`

                $echocmd
                $echocmd "共有ライブラリを保存します :"
                cd $COBDIR/lib
                for i in `ls lib*.so.?.?`
                do
                        if test -f $BASE/cobtmp/lib/$i*
                        then
                                $echocmd $i
                                cp $COBDIR/lib/$i $SAVDIR/$i.$verno.$revno
                        fi
                done

                $echocmd
                $echocmd "古い共有ライブラリを次のディレクトリに保存しました:"
                $echocmd " $SAVDIR"
                $echocmd
                $echocmd "古い共有ライブラリを使用する方法はマニュアルを参照し"
                $echocmd "てください。"
                ;;
        esac
fi
cd $COBDIR

cd $COBDIR


LD_LIBRARY_PATH=$COBDIR/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

chmod 755 $COBDIR


if test -d $COBDIR/lib
then
	cd $COBDIR/lib

	SEARCHDIR=/usr/lib
	SEARCHDIR2=/lib



	SEARCHFILE=libsocket


	if test ! -f $SEARCHDIR/$SEARCHFILE.a -a ! -f $SEARCHDIR2/$SEARCHFILE.a
	then
	    if test ! -f $SEARCHDIR/$SEARCHFILE.so -a ! -f $SEARCHDIR2/$SEARCHFILE.so
	    then
		$echocmd
		$echocmd "警告: ソケットライブラリ $SEARCHDIR/$SEARCHFILE が見つかりません"
		$echocmd
		$echocmd "CCITCP はこのライブラリからのサポートを必要とします。 このライブラリとリンク"
		$echocmd "しないと CCITCP の機能を使用するアプリケーションを実行できません。"
		$echocmd "このサポートを必要とする場合は、COBOL システムのインストール前に"
		$echocmd "TCP/IP Development System ライブラリをインストールする必要があります。"
	    fi

	fi


fi

# allow for non-standard location of the C compiler if there is one
_ret=0
pkginfo -q SPROcc || _ret=$?
if [ $_ret -eq 0 ]
then
	NEWLOC="`pkginfo -r SPROcc`/SUNWspro"
       	if [ "$NEWLOC" != "/opt/SUNWspro" ] 
	then
       		chmod 644 $COBDIR/etc/cobopt
		ed $COBDIR/etc/cobopt >/dev/null 2>&1 <<EOF
2
s#/opt/SUNWspro#$NEWLOC#
w
q
EOF
       		chmod 644 $COBDIR/etc/cobopt64
		ed $COBDIR/etc/cobopt64 >/dev/null 2>&1 <<EOF
5
s#/opt/SUNWspro#$NEWLOC#
w
q
EOF
	fi
fi







set +e
trap "" 0



cd $COBDIR


set_java_version



if test -d $COBDIR/lmf
then
sep
$echocmd "この製品は Micro Focus ライセンス管理機能 (License Management Facility)"
$echocmd "(LMF)を使用して保護されています。ライセンスシステムおよびライセンスの"
$echocmd "インストールに関する詳細は、マニュアル「開発ライセンスガイド」を"
$echocmd "参照してください。"
$echocmd
# RPI 517299 Ensure that the directory /var/mfaslmf exists before
# any LMF install scripts are run.
mkdir -p /var/mfaslmf
chmod 777 /var/mfaslmf
admindir=
$echocmd
$echocmd "LMF がインストールされていない、また最新のバージョンにアップグレード"
$echocmd "したい場合は、今インストールすることを推奨します。"
$echocmd
yorn "LMF を今すぐインストールしますか? (y/n): \c"
lmf_ans=$?
case "$lmf_ans" in
	1)  export COBDIR
		LD_LIBRARY_PATH=$COBDIR/lib:$LD_LIBRARY_PATH
                export LD_LIBRARY_PATH
		PATH=$COBDIR/bin:$PATH
		export PATH
		thisd=`pwd`
                cd $COBDIR/lmf
		sh lmfinstall
                cd $thisd
		if [ -f "/tmp/lmfinstalldir" ]; then
			admindir=`cat /tmp/lmfinstalldir`
			lmfinstallok=1
		else
			lmfinstallok=0
		fi
		;;
	*)      $echocmd
	        $echocmd "LMF がインストールされていない場合は、以下のように"
		$echocmd "入力して後からインストールできます :"
                $echocmd "    cd $COBDIR/lmf"
                $echocmd "    sh lmfinstall"
		thisd=`pwd`
		lmfinstallok=-1
                cd $COBDIR/lmf
		admindir=`./lmfgetpv|tail -1|sed "s/Loaded from //"`
		if [ "$admindir" = "License Manager is not running" ]; then
			admindir=
		fi
		cd $thisd
		;;
esac

# Now deal with installation of licenses if we can, and if installer wishes to

$echocmd
$echocmd "ライセンスのインストール方法に関する詳細は、マニュアル"
$echocmd "「開発ライセンスガイド」を参照してください。"
$echocmd 
$echocmd "$COBDIR に移動して以下のコマンドを実行して"
$echocmd "インストールすることもできます。"
$echocmd "        sh ./bin/mflicense"
$echocmd

fi


cd $COBDIR

sep
sh ./aslmf/aslmfinstall


modnum=0
if [ -d $COBDIR/dynload64 ]
then
    modnum=1
fi
if [ -d $COBDIR/dynload ]
then
    modnum=`expr $modnum + 2`
fi


sep
case $modnum in

# 32 bit only
    1)  $echocmd "この製品は 32 ビットモードでのみ使用できます。" ;
        $COBDIR/bin/cobmode -s 32 ;
        ;;

# 64 bit only
    2)  $echocmd "この製品は 64 ビットモードでのみ使用できます。"
        $COBDIR/bin/cobmode -s 64 ;
        ;;

# 32 and 64 bit.
    3)  $echocmd "この製品は 32 ビットモードでも 64 ビットモードでも使用できます。" ;
        $echocmd "システムのデフォルトモードに設定するモードを 32 か 64 で入力してください: \c" ;
        read mod ;
        while [ "$mod" != "32" -a "$mod" != "64" ]
        do
            $echocmd "無効な値が入力されました。32 か 64 のどちらかを入力してください。"
            read mod
        done ;
        $COBDIR/bin/cobmode -s $mod ;
        $echocmd "システムのデフォルト COBMODE が $mod に設定されました。"
        ;;
esac

if [ -f $COBDIR/docs/html/asdocs.tar ]; then
        sep
        $echocmd "ドキュメントをインストールします。お待ちください..."
	cd $COBDIR/docs/html
	tar xf asdocs.tar
	rm -f asdocs.tar
        cd $COBDIR
fi

cat >$COBDIR/etc/mfreg.dat <<EOF
SX

SX/5.0

SX/5.0/Interface Mapping Toolkit

SX/5.0/Interface Mapping Toolkit/Version
5.0
SX/5.0/Interface Mapping Toolkit/5.0/Install

SX/5.0/Interface Mapping Toolkit/5.0/Install/SCHEMA
$COBDIR/etc/schema
SX/5.0/Interface Mapping Toolkit/5.0/Install/BIN
$COBDIR/lib
EOF

if [ -f $COBDIR/bin/es_install ]; then
$COBDIR/bin/es_install

if [ -d $COBDIR/src/enterpriseserver/xa ]; then
chmod 777 $COBDIR/src/enterpriseserver/xa
fi
fi

if [ "$2" = "configureopenldap" ]; then
if [ -f "$COBDIR/bin/configure_openldap" ]; then
$COBDIR/bin/configure_openldap <<EOF
y

EOF
fi
fi


sep
$echocmd "(忘れずに、$COBDIR を COBDIR として設定して、"
$echocmd "LD_LIBRARY_PATH に $COBDIR/lib、"
$echocmd "PATH に $COBDIR/bin を追加してください。)"
$echocmd
$echocmd "(LD_LIBRARY_PATH_32 または LD_LIBRARY_PATH_64 を設定している場合は、"
$echocmd "その値が LD_LIBRARY_PATH の設定を上書きするのでご注意ください。)"
$echocmd

$COBDIR/bin/services

$echocmd
$echocmd "警告: あらゆる実行可能ファイル(ランタイムシステムまたはアプリケーション)は、"
$echocmd "この新しいリリースを使用して再リンクする必要があります。再リンクしないと、この"
$echocmd "新しいリリースでの旧バージョンの実行可能ファイルの実行結果は不確定になります。"
$echocmd
$echocmd "インストールは正常終了しました。"
$echocmd
$echocmd "COBOL システムを使用する準備が整いました。"
