#!/bin/sh
# /usr/lib/emacsen-common/packages/install/mew
set -e

abort_install() {
  echo "Byte compile for ${FLAVOR} is failed" >&2
  echo "Please check ${ELCDIR}/CompilationLog" >&2
  exit 1
}

FLAVOR=$1
VERSION=1:5.2-2
PACKAGE=mew

if [ -z "${FLAVOR}" ]; then exit 0; fi
if [ "${FLAVOR}" = emacs ]; then exit 0; fi
if [ "${FLAVOR}" = emacs19 ]; then exit 0; fi
if [ "${FLAVOR}" = mule2 ]; then exit 0; fi

ELDIR=/usr/share/emacs/site-lisp/mew
ELCDIR_BASE=/usr/share/${FLAVOR}/site-lisp/mew
FLAGS="-no-site-file -q -batch -l __path.el -f batch-byte-compile"

EMACSEN_MULE=${FLAVOR}
EMACSEN_NOMULE=""

FLAVOR_SUFFIX=`echo ${FLAVOR} | cut -s -d - -f 2`
FLAVORTEST=`echo ${FLAVOR} | sed -e s/^s// | cut -c-6`
if [ "X${FLAVORTEST}" = "Xxemacs" ]; then
  FLAVOR_BODY=`echo ${FLAVOR} | cut -d - -f 1`
  if [ "X${FLAVOR_SUFFIX}" = "Xmule" ]; then
    EMACSEN_MULE=`ls /usr/bin/${FLAVOR_BODY}*-mule* 2>/dev/null | head -1`
    if [ -n "${EMACSEN_MULE}" ]; then
      EMACSEN_MULE=`basename ${EMACSEN_MULE}`
    fi
    EMACSEN_NOMULE=""
  elif [ "X${FLAVOR_SUFFIX}" = "Xnomule" ]; then
    EMACSEN_MULE=""
    EMACSEN_NOMULE=`ls /usr/bin/${FLAVOR_BODY}*-nomule* 2>/dev/null | head -1`
    if [ -n "${EMACSEN_NOMULE}" ]; then
      EMACSEN_NOMULE=`basename ${EMACSEN_NOMULE}`
    fi
  else
    FLAVOR_SUFFIX=""
    EMACSEN_MULE=`ls /usr/bin/${FLAVOR}*-mule* 2>/dev/null | head -1`
    if [ -n "${EMACSEN_MULE}" ]; then
      EMACSEN_MULE=`basename ${EMACSEN_MULE}`
    fi
    EMACSEN_NOMULE=`ls /usr/bin/${FLAVOR}*-nomule* 2>/dev/null | head -1`
    if [ -n "${EMACSEN_NOMULE}" ]; then
      EMACSEN_NOMULE=`basename ${EMACSEN_NOMULE}`
    fi
  fi
fi

COMPILED=no
for EMACSEN in "${EMACSEN_MULE}" "${EMACSEN_NOMULE}"; do
  if [ -n "${EMACSEN}" ]; then
    ELCDIR=${ELCDIR_BASE}
    if [ "X${FLAVORTEST}" = "Xxemacs" -a -z "${FLAVOR_SUFFIX}" ]; then
      if [ "X${EMACSEN}" = "X${EMACSEN_MULE}" ]; then
	echo -n "install/${PACKAGE}: Byte-compiling for ${FLAVOR} (mule) ..."
        ELCDIR=${ELCDIR}/mule
      else
	echo -n "install/${PACKAGE}: Byte-compiling for ${FLAVOR} (nomule) ..."
        ELCDIR=${ELCDIR}/nomule
      fi
    else
      echo -n "install/${PACKAGE}: Byte-compiling for ${FLAVOR} ..."
    fi
    STAMP="${ELCDIR}/compile-stamp"
    if [ -e "${STAMP}" ]; then
      if [ "X${VERSION}" = X"`cat ${STAMP}`" ]; then
	echo " skipped. (already compiled)" 
      else
	rm -f ${STAMP}
      fi
    fi
    if [ ! -e "${STAMP}" ]; then
      if [ "X${FLAVORTEST}" = "Xxemacs" -a -z "${FLAVOR_SUFFIX}" ]; then
	rm -f ${ELCDIR_BASE}/*.el ${ELCDIR_BASE}/*.elc
      fi
      rm -rf ${ELCDIR}
      install -m 755 -d ${ELCDIR}
      cd ${ELDIR}
      cp *.el contrib/*.el ${ELCDIR}/
      cd ${ELCDIR}
      if [ "X${EMACSEN}" != "X${EMACSEN_MULE}" ]; then
	rm -f mew-lang-jp.el mew-mule3.el
      fi
      rm -f auxiliary.el
      FILES=`ls -1 *.el | grep -v '^mew-nmz'`
      cat << EOF > __path.el
(setq load-path (cons "." load-path))
(setq byte-compile-warnings nil)
(setq mew-compiling t)
EOF
      ${EMACSEN} ${FLAGS} ${FILES} >CompilationLog 2>&1 || abort_install
      if [ "X${EMACSEN}" != "X${EMACSEN_MULE}" ]; then
	rm -f mew-nmz*.el
      else
	# compile mew-nmz*.el if possible
	if [ -e /usr/share/${FLAVOR}/site-lisp/w3m/w3m-namazu.elc ]; then
	  cat << EOF >> __path.el
(setq load-path (cons "/usr/share/${FLAVOR}/site-lisp/w3m" load-path))
EOF
	  ${EMACSEN} ${FLAGS} mew-nmz*.el >>CompilationLog 2>&1 || abort_install
	  rm -f mew-nmz*.el
	else
	  rm -f mew-nmz*.el
	  ln -sf ${ELDIR}/mew-nmz*.el .
	  ln -sf ${ELDIR}/contrib/mew-nmz*.el .
	  rm -f 'mew-nmz*.el'
	fi
      fi
      rm -f etc
      ln -sf ${ELDIR}/etc .
      rm -f ${FILES} __path.el
      ( for d in "${ELDIR}" "${ELDIR}/contrib"; do
	  if [ -d ${d} ]; then
	    cd ${d}
	    for f in *.el; do
	      if [ -f ${ELCDIR}/${f}c ]; then
		ln -sf ${d}/${f} ${ELCDIR}/${f}
	      fi
	    done
	  fi
	done
      )
      gzip -9 CompilationLog
      chmod 644 CompilationLog.gz
      if [ -f mew.elc ]; then
        chmod 644 *.elc
	echo "${VERSION}" > ${STAMP}
        chmod 644 ${STAMP}
	COMPILED=yes
      fi
      if [ "X${FLAVORTEST}" = "Xxemacs" -a -z "${FLAVOR_SUFFIX}" ]; then
	if [ -e ${ELCDIR_BASE}/mule/mew.elc ]; then
	  ln -sf ${ELCDIR_BASE}/mule/mew* ${ELCDIR_BASE}/
	elif [ -e ${ELCDIR_BASE}/nomule/mew.elc ]; then
	  ln -sf ${ELCDIR_BASE}/nomule/mew* ${ELCDIR_BASE}/
	fi
      fi
      echo " done."
    fi
  fi
done

if [ "X${COMPILED}" = Xyes ]; then
  RECOMPILE_MHC=no
  RECOMPILE_W3MEL=no
  if [ -d /usr/share/${FLAVOR}/site-lisp/mhc ]; then
    RECOMPILE_MHC=yes
  fi
  if [ -d /usr/share/${FLAVOR}/site-lisp/w3m ]; then
    RECOMPILE_W3MEL=yes
  fi
  if [ "X${RECOMPILE_MHC}" = Xyes ]; then
    # remove mhc before removing w3m-el to prevent redundant byte-compiling
    pkg=mhc
    f=/usr/lib/emacsen-common/packages/remove/${pkg}
    if [ -f ${f} ]; then
      ${f} ${FLAVOR}
    fi
  fi
  if [ "X${RECOMPILE_W3MEL}" = Xyes ]; then
    pkg=w3m-el
    f=/usr/lib/emacsen-common/packages/remove/${pkg}
    if [ -f ${f} ]; then
      ${f} ${FLAVOR}
    fi
    # install w3m-el before installing mhc to prevent redundant byte-compiling
    pkg=w3m-el
    f=/usr/lib/emacsen-common/packages/install/${pkg}
    if [ -f ${f} ]; then
      ${f} ${FLAVOR}
    fi
  fi
  if [ "X${RECOMPILE_MHC}" = Xyes ]; then
    pkg=mhc
    if [ ! -d /usr/share/${FLAVOR}/site-lisp/${pkg} ]; then
      f=/usr/lib/emacsen-common/packages/install/${pkg}
      if [ -f ${f} ]; then
	${f} ${FLAVOR}
      fi
    fi
  fi
fi

exit 0
