| #!/bin/bash | |
| # WINE Installation script | |
| # Can do almost everything from compiling to configuring... | |
| # | |
| # Copyright 1999 Ove Kåven | |
| # | |
| # This library is free software; you can redistribute it and/or | |
| # modify it under the terms of the GNU Lesser General Public | |
| # License as published by the Free Software Foundation; either | |
| # version 2.1 of the License, or (at your option) any later version. | |
| # | |
| # This library is distributed in the hope that it will be useful, | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| # Lesser General Public License for more details. | |
| # | |
| # You should have received a copy of the GNU Lesser General Public | |
| # License along with this library; if not, write to the Free Software | |
| # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | |
| # | |
| #--- defaults (change these if you are a packager) | |
| CONFARGS="" # configure args, e.g. --prefix=/usr | |
| prefix=/usr/local # installation prefix | |
| bindir=$prefix/bin # where winelib apps will be (or are) installed | |
| libdir=$prefix/lib # where libwine.so will be (or is) installed | |
| BINDIST=no # whether called from a binary package config script | |
| # functions | |
| function std_sleep { | |
| sleep 1 | |
| } | |
| function conf_question { | |
| # parameters: $1 = importance, $2 = question-id, $3+ = message lines | |
| # the first two parameters can be used by e.g. debconf in debian packages | |
| # but here we just print the message | |
| shift 2 | |
| echo | |
| local LINE="$1" | |
| while [ $# -gt 0 ] && shift | |
| do { | |
| echo "$LINE" | |
| LINE="$1" | |
| } | |
| done | |
| } | |
| function conf_reset_question { | |
| # parameters: $1 = question-id | |
| # this is used to flush any cached answers and "already-displayed" flags | |
| shift # dummy command | |
| } | |
| function conf_yesno_answer { | |
| unset ANSWER | |
| while [ "$ANSWER" != 'yes' ] && [ "$ANSWER" != 'no' ] | |
| do { | |
| echo -n "$1" | |
| read ANSWER | |
| } | |
| done | |
| } | |
| function conf_string_answer { | |
| echo -n "$1" | |
| read ANSWER | |
| } | |
| # startup... | |
| echo "WINE Installer v0.75" | |
| echo | |
| if [ "$BINDIST" = 'no' ] | |
| then { | |
| if ! [ -f configure ] | |
| then { | |
| if [ -f ../configure ] | |
| then { | |
| pushd .. | |
| } | |
| else { | |
| echo "You're running this from the wrong directory." | |
| echo "Change to the Wine source's main directory and try again." | |
| exit 1 | |
| } | |
| fi | |
| } | |
| fi | |
| if [ `whoami` = 'root' ] | |
| then { | |
| echo "You are running wineinstall as root, this is not advisable. Please rerun as a user." | |
| echo "Aborting." | |
| exit 1 | |
| } | |
| fi | |
| if [ ! -w . ] | |
| then { | |
| echo "The source directory is not writable. You probably extracted the sources as root." | |
| echo "You should remove the source tree and extract it again as a normal user." | |
| exit 1 | |
| } | |
| fi | |
| # check whether RPM installed, and if it is, remove any old wine rpm. | |
| hash rpm &>/dev/null | |
| RET=$? | |
| if [ $RET -eq 0 ]; then | |
| if [ -n "`rpm -qi wine 2>/dev/null|grep "^Name"`" ]; then | |
| echo "Warning: Old Wine RPM install detected. Do you want to remove it first?" | |
| conf_yesno_answer "(yes/no) " | |
| if [ "$ANSWER" = 'yes' ]; then | |
| echo "We need to remove the rpm as root, please enter your root password" | |
| echo | |
| echo Starting wine rpm removal... | |
| su -c "rpm -e wine; RET=$?" | |
| if [ $RET -eq 0 ]; then | |
| echo Done. | |
| else | |
| echo "FAILED. Probably you aren't installing as root." | |
| echo "Expect problems (library conflicts with existing install etc.)." | |
| fi | |
| else | |
| echo "Sorry, I won't install Wine when an rpm version is still installed." | |
| echo "(Wine support suffered from way too many conflicts between RPM" | |
| echo "and source installs)" | |
| echo "Have a nice day !" | |
| exit 1 | |
| fi | |
| fi | |
| fi | |
| # check whether wine binary still available | |
| if [ -n "`wine --version 2>/dev/null`" ] | |
| then | |
| echo "Warning !! wine binary (still) found, which may indicate" | |
| echo "a (conflicting) previous installation." | |
| echo "You might want to abort and uninstall Wine first." | |
| echo "(If you previously tried to install from source manually, " | |
| echo "run 'make uninstall' from the wine root directory)" | |
| std_sleep | |
| fi | |
| # run the configure script, if necessary | |
| if [ -f config.cache ] && [ -f Makefile ] && [ Makefile -nt configure ] | |
| then { | |
| echo | |
| echo "I see that WINE has already been configured, so I'll skip that." | |
| std_sleep | |
| # load configure results | |
| . ./config.cache | |
| } | |
| else { | |
| echo "Running configure..." | |
| echo | |
| if ! ./configure -C $CONFARGS --prefix=$prefix | |
| then { | |
| echo | |
| echo "Configure failed, aborting install." | |
| rm -f config.cache | |
| exit 1 | |
| } | |
| fi | |
| # load configure results | |
| . ./config.cache | |
| # make sure X was found | |
| eval "$ac_cv_have_x" | |
| if [ "$have_x" != "yes" ] | |
| then { | |
| echo "Install the X development headers and try again." | |
| rm -f config.cache | |
| exit 1 | |
| } | |
| fi | |
| } | |
| fi | |
| # now do the compilation and install, we need to always do this because we | |
| # don't want the 'make install' command we might run to run 'make' as root | |
| if [ `whoami` != 'root' ] | |
| then { | |
| # ask the user if they want to build and install wine | |
| echo | |
| echo "We need to install wine as root user, do you want us to build wine," | |
| echo "'su root' and install Wine? Enter 'no' to continue without installing" | |
| conf_yesno_answer "(yes/no) " | |
| ROOTINSTALL="$ANSWER" | |
| if [ "$ROOTINSTALL" = "yes" ] | |
| then { | |
| # start out with the basic command | |
| sucommand="make install" | |
| # if the user doesn't have $libdir in their ld.so.conf add this | |
| # to our sucommand string | |
| if [ -f /etc/ld.so.conf ] | |
| then | |
| if ! grep -s "$libdir" /etc/ld.so.conf >/dev/null 2>&1 | |
| then { | |
| echo | |
| echo "$libdir doesn't exist in your /etc/ld.so.conf, it will be added" | |
| echo "when we perform the install..." | |
| sucommand="$sucommand;echo $libdir>>/etc/ld.so.conf" | |
| } | |
| fi | |
| # run ldconfig always just in case some updated files don't get linked | |
| sucommand="$sucommand;$ac_cv_path_LDCONFIG" | |
| fi | |
| } | |
| fi # [ "$ROOTINSTALL" = "yes" ] | |
| echo | |
| echo "Compiling WINE. Grab a lunch or two, rent a video, or whatever," | |
| echo "in the meantime..." | |
| echo | |
| std_sleep | |
| # try to just make wine, if this fails 'make depend' and try to remake | |
| if ! { make; } | |
| then { | |
| if ! { make depend && make; } | |
| then { | |
| echo | |
| echo "Compilation failed, aborting install." | |
| exit 1 | |
| } | |
| fi | |
| } | |
| fi | |
| if [ "$ROOTINSTALL" = "yes" ] | |
| then { | |
| echo | |
| echo "Performing 'make install' as root to install binaries, enter root password" | |
| std_sleep | |
| if ! su root -c "$sucommand" | |
| then { | |
| echo | |
| echo "Incorrect root password. If you are running Ubuntu or a similar distribution," | |
| echo "'make install' needs to be run via the sudo wrapper, so trying that one now" | |
| if ! sudo su root -c "$sucommand" | |
| then { | |
| echo | |
| echo "Either you entered an incorrect password or we failed to" | |
| echo "run '$sucommand' correctly." | |
| echo "If you didn't enter an incorrect password then please" | |
| echo "report this error and any steps to possibly reproduce it to" | |
| echo "http://bugs.winehq.org/" | |
| echo | |
| echo "Installation failed, aborting." | |
| exit 1 | |
| } | |
| fi | |
| } | |
| fi | |
| echo | |
| # see if wine is installed on the users system, if not prompt them | |
| # and then exit | |
| if [ -z "`wine --version 2>/dev/null`" ] | |
| then | |
| echo "Could not find wine on your system. Run wineinstall as root to install wine" | |
| echo "before re-running wineinstall as a user." | |
| echo | |
| echo "Exiting wineinstall" | |
| exit 1; | |
| fi | |
| WINEINSTALLED=yes | |
| } | |
| else { | |
| WINEINSTALLED=no | |
| } | |
| fi # [ "$ROOTINSTALL" = "yes" ] | |
| } | |
| fi # [ `whoami` != 'root' ] | |
| } | |
| fi # BINDIST | |
| if [ "$WINEINSTALLED" = 'no' ] | |
| then | |
| tools/wineprefixcreate --use-wine-tree . | |
| else | |
| wineprefixcreate | |
| fi | |
| echo | |
| # it's a wrap | |
| echo | |
| echo "Installation complete for now. Good luck (this is still beta software)." | |
| echo "If you have problems with WINE, please read the documentation first," | |
| echo "as many kinds of potential problems are explained there." | |
| exit 0 |