#!/bin/sh
set -o errexit -o noglob;
if [ "${1}" = "-m" ]; then
MIDIPIX_DNAME_DIST=minipix; shift;
fi;
if [ -n "${1}" ]; then
MIDIPIX_PATH=$(cygpath -am "${1}");
else
MIDIPIX_PATH=$(cygpath -am .);
fi;
: ${MIDIPIX_DNAME_DIST:=native};
echo "Absolute Midipix pathname: ${MIDIPIX_PATH}";
echo "Distribution name : ${MIDIPIX_DNAME_DIST}";
printf "%-85s" "Checking if all binaries are present...";
for __ in chroot env ntctty.exe; do
if [ ! -e ${MIDIPIX_PATH}/${MIDIPIX_DNAME_DIST}/bin/${__} ]; then
printf "\nerror: missing file ${MIDIPIX_PATH}/${MIDIPIX_DNAME_DIST}/bin/${__}\n";
exit 2;
fi;
done;
printf "\033[97m[ \033[92mOK \033[97m]\033[0m\n";
printf "%-85s" "Checking ${MIDIPIX_PATH}/${MIDIPIX_DNAME_DIST}/lib for symbolic links...";
if [ -n "$(find ${MIDIPIX_DNAME_DIST}/lib \
-maxdepth 1 -name \*.so -type l -print -quit)" ]; then
echo;
echo "Warning: ${MIDIPIX_PATH}/${MIDIPIX_DNAME_DIST}/lib contains shared objects (library"
echo "images) that are symbolic links. This is not supported by Midipix at"
echo "present and commonly occurs if the binary distribution tarball was"
echo "extracted by an application that does not support symbolic links"
echo "correctly. This also occurs when a binary distribution was built locally."
printf "Convert all shared object symbolic links to hard links? (y|N) ";
read __;
case "${__}" in
[yY]) break; ;;
*) echo "Exiting."; exit 3; ;;
esac;
for LINK_NAME in $(find ${MIDIPIX_PATH}/${MIDIPIX_DNAME_DIST}/lib \
-maxdepth 1 -name \*.so -type l); do
LINK_TARGET="$(readlink -- "${LINK_NAME}")";
if [ -f "${MIDIPIX_PATH}/native/lib/${LINK_TARGET}" ]; then
echo rm -f -- "${LINK_NAME}";
rm -f -- "${LINK_NAME}";
echo ln -f -- "${LINK_TARGET}" "${LINK_NAME}";
ln -f -- "${LINK_TARGET}" "${LINK_NAME}";
fi;
done;
fi;
printf "\033[97m[ \033[92mOK \033[97m]\033[0m\n";
# vim:filetype=sh