709d4b5f38
(a) Its name was changed from Wnn to FreeWnn because Wnn6 which is a commercial software exits (b) Its license was changed to GPL. (c) The method to configure was changed from imake to GNU configure. (d) Relatively to the original Wnn, the Wnn in the ports tree were modified by me a lot. Most of the modifications were adopted into FreeWnn. (c) Header and library files are installed into ${LOCALBASE}/{lib,include} instead of ${X11BASE}/{lib,include}. (2) FreeWnn is divided into two ports FreeWnn-lib and FreeWnn-server in chinese, korean and japanese categories. The former is for libwnn and header files to compile client commands, and the files used in client commands. The latter is for a server to convert KANA to KANJI (Chinese character), and dictionaries and files used by the server. Notice: I forgot to commit FreeWnn-{lib,server} (^_^;;
176 lines
4.7 KiB
Bash
176 lines
4.7 KiB
Bash
#!/bin/sh
|
|
# an installation script for Wnn4.2
|
|
|
|
check_pw()
|
|
{
|
|
if which -s pw; then
|
|
:
|
|
else
|
|
cat <<EOF
|
|
|
|
This system looks like a pre-2.2 version of FreeBSD. We see that it
|
|
is missing the "pw" utility. We need this utility. Please get and
|
|
install it, and try again. You can get the source from:
|
|
|
|
ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/usr.sbin/pw.tar.gz
|
|
|
|
EOF
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
ask() {
|
|
local question default answer
|
|
|
|
question=$1
|
|
default=$2
|
|
if [ -z "${PACKAGE_BUILDING}" ]; then
|
|
read -p "${question} (y/n) [${default}]? " answer
|
|
fi
|
|
if [ x${answer} = x ]; then
|
|
answer=${default}
|
|
fi
|
|
echo ${answer}
|
|
}
|
|
|
|
yesno() {
|
|
local dflt question answer
|
|
|
|
question=$1
|
|
dflt=$2
|
|
while :; do
|
|
answer=$(ask "${question}" "${dflt}")
|
|
case "${answer}" in
|
|
[Yy]*) return 0;;
|
|
[Nn]*) return 1;;
|
|
esac
|
|
echo "Please answer yes or no."
|
|
done
|
|
}
|
|
|
|
case $2 in
|
|
PRE-INSTALL)
|
|
|
|
## Hack /etc/master.passwd ##
|
|
# check
|
|
id_69=`id -u 69 2> /dev/null`
|
|
id_wnn=`id -u wnn 2> /dev/null`
|
|
if [ X"$id_wnn" != X ];then
|
|
exit 0
|
|
elif [ X"$id_69" != X ]; then
|
|
cat <<EOF
|
|
|
|
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
This system already has an account whose name is not 'wnn' and ID
|
|
number is 69.
|
|
|
|
'`id 69`'
|
|
|
|
For Wnn4.2 in this port or package, ID number of 'wnn' has to be 69.
|
|
Please try again after you delete the account.
|
|
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
EOF
|
|
exit 1
|
|
fi
|
|
|
|
# add an account 'wnn' to this system
|
|
echo ""
|
|
echo "You need an account 'wnn' whose ID number is 69"
|
|
if [ -z "${BATCH}" ]; then
|
|
if yesno "Would you like to create it automatically?" y; then
|
|
# We need a command 'pw(8)'
|
|
check_pw
|
|
pw useradd wnn -u 69 -g 7 -h - -d /nonexistent \
|
|
-s /nonexistent -c Wnn || exit
|
|
else
|
|
echo "Please create it, and try again."
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "Create it automatically!"
|
|
check_pw
|
|
pw useradd wnn -u 69 -g 7 -h - -d /nonexistent \
|
|
-s /nonexistent -c Wnn || exit
|
|
fi
|
|
;;
|
|
|
|
POST-INSTALL)
|
|
|
|
case $1 in
|
|
ja-FreeWnn-*)
|
|
sys_dirs="${PKG_PREFIX}/lib/wnn/ja_JP/dic/pubdic ${PKG_PREFIX}/lib/wnn/ja_JP/dic/wnncons ${PKG_PREFIX}/lib/wnn/ja_JP/dic/gerodic"
|
|
usr_dirs=${PKG_PREFIX}/lib/wnn/ja_JP/dic/usr
|
|
wnnserver=${PKG_PREFIX}/bin/Wnn4/jserver
|
|
wnntouch=${PKG_PREFIX}/bin/Wnn4/wnntouch
|
|
wnnstat=${PKG_PREFIX}/bin/Wnn4/wnnstat
|
|
wnnname=Wnn
|
|
wnn_socket=/tmp/jd_sockV4
|
|
wnn_lang=ja_JP
|
|
;;
|
|
zh-FreeWnn-*)
|
|
sys_dirs="${PKG_PREFIX}/lib/wnn/zh_CN/dic/sys ${PKG_PREFIX}/lib/wnn/zh_TW/dic/sys"
|
|
usr_dirs="${PKG_PREFIX}/lib/wnn/zh_CN/dic/usr ${PKG_PREFIX}/lib/wnn/zh_TW/dic/usr"
|
|
wnnserver=${PKG_PREFIX}/bin/cWnn4/cserver
|
|
wnntouch=${PKG_PREFIX}/bin/cWnn4/cwnntouch
|
|
wnnstat=${PKG_PREFIX}/bin/cWnn4/cwnnstat
|
|
wnnname=cWnn
|
|
wnn_socket=/tmp/cd_sockV4
|
|
wnn_lang=zh_CN
|
|
;;
|
|
ko-FreeWnn-*)
|
|
sys_dirs="${PKG_PREFIX}/lib/wnn/ko_KR/dic/sys"
|
|
usr_dirs=${PKG_PREFIX}/lib/wnn/ko_KR/dic/usr
|
|
wnnserver=${PKG_PREFIX}/bin/kWnn4/kserver
|
|
wnntouch=${PKG_PREFIX}/bin/kWnn4/kwnntouch
|
|
wnnstat=${PKG_PREFIX}/bin/kWnn4/kwnnstat
|
|
wnnname=kWnn
|
|
wnn_socket=/tmp/kd_sockV4
|
|
wnn_lang=ko_KR
|
|
;;
|
|
esac
|
|
|
|
chown wnn $wnnserver
|
|
for dir in $sys_dirs; do
|
|
$wnntouch $dir/*
|
|
done
|
|
for dir in $usr_dirs; do
|
|
if [ ! -d $dir ]; then
|
|
mkdir -p $dir
|
|
fi
|
|
chown wnn $dir
|
|
done
|
|
|
|
## create a startup script ##
|
|
startup_script=${PKG_PREFIX}/etc/rc.d/${wnnname}.sh
|
|
if [ ! -f ${startup_script} ]; then
|
|
echo "Installing ${startup_script} startup file.";
|
|
echo '#!/bin/sh' > ${startup_script};
|
|
echo "wnn=${wnnserver}" >> ${startup_script};
|
|
echo 'if [ -x $wnn ]; then' >> ${startup_script};
|
|
echo " ${wnnstat} -L ${wnn_lang} localhost > /dev/null 2>&1" >> ${startup_script};
|
|
echo ' if [ $? = 255 ]; then' >> ${startup_script};
|
|
echo " rm -f ${wnn_socket}" >> ${startup_script};
|
|
echo " echo -n ' ${wnnname}'" >> ${startup_script};
|
|
echo ' $wnn' >> ${startup_script};
|
|
echo " fi" >> ${startup_script};
|
|
echo "fi" >> ${startup_script};
|
|
if [ $1 = zh-Wnn-4.2 ]; then
|
|
wnnserver=${PKG_PREFIX}/bin/cWnn4/tserver
|
|
wnn_lang=zh_TW
|
|
wnn_socket=/tmp/td_sockV4
|
|
echo "wnn=${wnnserver}" >> ${startup_script};
|
|
echo 'if [ -x $wnn ]; then' >> ${startup_script};
|
|
echo " ${wnnstat} -L ${wnn_lang} localhost > /dev/null 2>&1" >> ${startup_script};
|
|
echo ' if [ $? = 255 ]; then' >> ${startup_script};
|
|
echo " rm -f ${wnn_socket}" >> ${startup_script};
|
|
echo " echo -n ' ${wnnname}'" >> ${startup_script};
|
|
echo ' $wnn' >> ${startup_script};
|
|
echo " fi" >> ${startup_script};
|
|
echo "fi" >> ${startup_script};
|
|
fi
|
|
chmod 755 ${startup_script};
|
|
chown bin.bin ${startup_script};
|
|
fi
|
|
;;
|
|
esac
|