bash
bash#!/bin/bash
if [ -z $1 ]; then
echo "You had to input Wine version."
exit 0
fi
WORKDIR="/usr/local/Workshop/Wine"
MAKEOPTS="-j3"
GCC_VERSION="gcc-4.9.3"
echo "Which version of Wine we are going to build?"
echo "1. Staging (Wine + several useful patches)"
echo "2. Vanilla (original version)"
echo "git. Latest development version from Git (vanilla only)"
echo "Choose one variant (1 or 2 or git)"
read KEYPRESS
case $KEYPRESS in
"1" )
NAME="wine-$1-staging"
ORIGINAL_NAME="wine-patched-staging-$1"
ARCHIVE_NAME="staging-$1.tar.gz"
SRC_URL="https://github.com/wine-compholio/wine-patched/archive/$ARCHIVE_NAME"
TAR_KEYS="xvf"
;;
"2" )
ORIGINAL_NAME="wine-$1"
NAME="wine-$1-vanilla"
ARCHIVE_NAME="wine-$1.tar.bz2"
BRANCH_VERSION="`echo $1 | awk 'BEGIN {FS="."}{print $1"."$2}' | awk 'BEGIN {FS="-"}{print $1}'`"
SRC_URL="https://dl.winehq.org/wine/source/$BRANCH_VERSION/$ARCHIVE_NAME"
TAR_KEYS="xvjf"
;;
"git" )
ORIGINAL_NAME="wine-master"
NAME="wine-git"
ARCHIVE_NAME="master.tar.gz"
SRC_URL="https://github.com/wine-mirror/wine/archive/master.tar.gz"
TAR_KEYS="xvf"
;;
esac
# Create necessary directories
mkdir -p "$WORKDIR/src"
mkdir -p "$WORKDIR/build"
mkdir -p "$WORKDIR/install"
# Delete all necessary directories if they are already exist
rm -rf "$WORKDIR/src/$NAME"
rm -rf "$WORKDIR/build/$NAME"
rm -rf "$WORKDIR/install/$NAME"
# Create necessary directories
mkdir -p "$WORKDIR/build/$NAME/wine64"
mkdir -p "$WORKDIR/build/$NAME/wine32"
mkdir -p "$WORKDIR/install/$NAME"
# Download and unpack sources
cd "$WORKDIR/src"
wget "$SRC_URL"
tar $TAR_KEYS $ARCHIVE_NAME
mv "$WORKDIR/src/$ORIGINAL_NAME" "$WORKDIR/src/$NAME"
# Configure and build Wine64
cd "$WORKDIR/build/$NAME/wine64"
CC=$GCC_VERSION ../../../src/$NAME/configure --enable-win64 --with-x --prefix=$WORKDIR/install/$NAME && make depend && make $MAKEOPTS && make install
# Configure and build Wine32
cd "$WORKDIR/build/$NAME/wine32"
CC=$GCC_VERSION ../../../src/$NAME/configure --prefix=$WORKDIR/install/$NAME --with-wine64=../wine64 --with-x && make depend && make $MAKEOPTS && make install
# Pack installed Wine to archive
cd "$WORKDIR/install"
tar -zcvf $NAME.tar.gz $NAME
# Cleaning
rm -rf "$WORKDIR/src"
rm -rf "$WORKDIR/build"
rm -rf "$WORKDIR/install/$NAME"