view etc/check_cygwin_setup.sh @ 2417:8b907450718f

[xemacs-hg @ 2004-12-05 08:48:12 by ben] The section on Troubleshooting (now 2.3) has been completely written and includes a lot of stuff that is not properly documented anywhere else. A fair amount of obsolete info has been deleted and I've incorporated the comments that people (mostly Stephen T) made. Former chapter 3 has been split up in two, one pertaining to basic I/O and the other to external I/O. What were formerly chapters 5 and 6 no longer exist as such; the info in them has been distributed across various other chapters. Old chapter 4 got split up, part going to the new chapter 4 on external I/O and part going to the new chapter 5 on the Internet. In this new chapter, stuff not pertaining to a specific package (e.g. VM or GNUS) was taken out of package-specific sections and a general mail section was constituted. Part of old chapter 5 remains in a new chapter 6 devoted to Emacs Lisp and other advanced stuff, and a section from old chapter 3 on basic init-file Lisp and some stuff from old chapter 5 on Info. The rest of chapter 5 was just misc and has gotten scattered to the winds (mostly in chapters 3 and 4). Old chapter 6 has also gotten quite scattered; there is no longer any section specifically devoted to Windows except one of the Installation sections (along with a section specfically devoted to Unix), and the rest has moved to join the appropriate non-Windows-specific section elsewhere. A lot of chapters had their sections rearranged and likewise for sections having entries rearranged, with the intention that the new arrangement should be more natural. In general I hope that stuff should be much easier to locate. I also rewrote the entries on the relation between XEmacs and GNU Emacs on the authors of XEmacs, including lots of info on who wrote specific subsections. However, this history is certainly not complete; I hope people will look over this and fix it up as necessary.
author ben
date Sun, 05 Dec 2004 08:48:12 +0000
parents 98fb34b6fbe9
children
line wrap: on
line source

#! bash

yorn()
{
	echo -n " [y/n] "
	read YN junk
	if [ "$YN" = "n" ]
	then
		return -1;
	else
		return 0;
	fi
}

echo -n "checking for cygwin..."

if ! uname -v
then
    echo "couldn't find uname please add cygwin to your path."
    exit -1
fi

OSversion="`uname -v | sed 's/^\(.\).*$/\1/'`"

shell=`type sh | sed 's/sh is //'`
distdir=`dirname $shell | sed 's!^//\(.\)/\(.*\)!\1:/\2!'`

echo "cygwin installed in $distdir"

echo "checking paths ..."

if [ ! -d "/bin" ]; then
    echo "You don't have a /bin directory.  Would you like to mount cygwin as /bin ?"
    if yorn; then
	mkdir /bin
	mount -b $distdir /bin
    fi
#this appears bogus. --ben
#elif [ "$distdir" != "/bin" ]; then
#    echo "Warning: you have /bin but it's not the cygwin installation."
fi

if [ ! -d "/tmp" ]; then
    echo -n "You don't have /tmp - create it?"
    if yorn; then
	mkdir /tmp
    fi
else
    echo "you have /tmp"
fi

if [ ! -d "/etc" ]; then
    echo -n "You don't have /etc - create it?"
    if yorn; then
	mkdir /etc
    fi
else
    echo "you have /etc"
fi

if [ -d "/etc" ]
then
    if [ ! -f "/etc/termcap" ]; then
	echo -n "You don't have /etc/termcap - create it?"
	if yorn; then
	    if [ ! -f "$distdir/../etc/termcap" ]
	    then
		distdir=`mount | grep "$distdir" | sed -e "s/ .*$//"`
		echo "Retrieving termcap from $distdir/../etc"
	    fi
	    if [ -f "$distdir/../etc/termcap" ]
	    then 
		cp "$distdir/../etc/termcap" /etc
	    else
		echo "Error: can't find termcap file"
	    fi
	fi
    else
	echo "you have /etc/termcap"
    fi

    if [ ! -f "/etc/passwd" ]; then
	echo -n "You don't have /etc/passwd - create it?"
	if yorn; then
	    if [ "$OS" = "Windows_NT" ]
	    then
		echo -n "Running on NT, create domain or local password file [d/l] "
		read DL junk
		if [ "$DL" = "d" ]
		then
		    mkpasswd -d > /etc/passwd
		else
		    mkpasswd -l > /etc/passwd
		fi
	    else
		echo "Please enter your userid e.g. andyp"
		read userid junk
		echo "Please enter your user name e.g. Andy Piper"
		read username junk
		echo "Administrator::500:513:::/bin/sh" > /etc/passwd
		echo "$userid::1000:513:$username::/bin/sh" >> /etc/passwd
	    fi
	fi
    else
	echo "you have /etc/passwd"
	userid=`id | sed -e "s/[^(]*(\([^)]*\)).*/\1/"`
    fi

    echo "userid is $userid"

    if [ ! -f "/etc/group" ]; then
	echo -n "You don't have /etc/group - create it?"
	if yorn; then
	    if [ "$OS" = "Windows_NT" ]
	    then
		echo -n "Running on NT, create domain or local group file [d/l] "
		read DL junk
		if [ "$DL" = "d" ]
		then
		    mkgroup -d > /etc/group
		else
		    mkgroup -l > /etc/group
		fi
	    else
		echo "None::513:" > /etc/group
		echo "Everyone::0:" >> /etc/group
	    fi
	fi
    else
	echo "you have /etc/group"
    fi

# this is bogus.  i have no hosts file and no problems. --ben
#    if [ ! -f "/etc/hosts" ]; then
#	echo -n "You don't have /etc/hosts - create it?"
#	if yorn; then
#	    mname=`uname -n`
#	    echo "Machine name is $mname"
#	    echo -n "Please enter your ip address "
#	    read mipaddr junk
#	    echo "$mname $mipaddr" > /etc/hosts
#	    echo "localhost 127.0.0.1" >> /etc/hosts
#	fi
#    else
#	echo "you have /etc/hosts"
#    fi
else
    echo "Can't create /etc files because /etc does not exist"
fi

echo "checking environment ..."

if [ "$HOME" = "" ]; then
    echo -n "HOME is not set, rectify?"
    if yorn; then
	if [ "$OS" = "Windows_NT" ]
	then
	    echo "please enter your home path [/winnt/profiles/$userid]"
	    read HOME junk
	    if [ "$HOME" = "" ]; then
		HOME="/winnt/profiles/$userid"
	    fi
	else
	    echo "please enter your home path [/]"
	    read HOME junk
	    if [ "$HOME" = "" ]; then
		HOME="/"
	    fi
	fi

	echo "HOME=$HOME; export HOME" >> $HOME/.bashrc
    fi
else 
    echo "HOME is $HOME"
fi

if [ "$TERM" != "ansi" -a "$TERM" != "linux" ]; then
    echo -n "TERM is not set to linux or ansi, rectify?"
    if yorn; then
	echo "TERM=linux; export TERM" >> $HOME/.bashrc
    fi
else 
    echo "TERM is $TERM"
fi

if echo $CYGWIN | grep -w tty > /dev/null; then
    echo "CYGWIN is $CYGWIN"
else 
    echo "CYGWIN does not contain \"tty\"; you may experience problems with
subprocess or terminal handling.  To rectify this add CYGWIN=tty to
your environment. (Note this cannot be done in bash as it needs to be
read when cygwin1.dll initializes.)"
fi