#!/bin/sh set -e bootstrap_install() { install -dv "$destdir" install -dv "$bindir" install -dv "$libdir" install -dv "$docdir" install -d "$prefix/bin/" install -d "$prefix/share/applications/" for eta in ./eve-transl${qtver}-??.tar.gz ;do install -m 0644 "$eta" "$libdir" done if [ -f "./dxvk-$dvver.tar.gz" ] ;then install -d "$libdir/dxvk/" echo "$dvver" >"$libdir/dxvk/version" chmod 0644 "$libdir/dxvk/version" tar xf ./dxvk-$dvver.tar.gz -C $libdir/dxvk/ --no-same-owner \ --strip-components=1 dxvk-$dvver/x32 dxvk-$dvver/x64 fi install -m 0644 "./evesetup.shlib" "$libdir" install -m 0644 "./evelauncher-${elver}.tar.gz" "$libdir" install -m 0644 "./evelauncher.kwinrule" "$docdir" install -m 0644 "./evelauncher.lua" "$docdir" sed -i s,./eve-transl,$libdir/eve-transl, ./evelauncher.sh for cmd in backup launcher.sh regedit restore wine winecfg winetricks ;do cmd=eve$cmd if [ -f "./$cmd" ] ;then sed -i s,SETUPDIR=\"\",SETUPDIR=\"$destdir\", ./$cmd sed -i s,./evesetup.shlib,$libdir/evesetup.shlib, ./$cmd install "./$cmd" "$bindir/" else if [ "$cmd" = "everestore" ] ;then ln -s evebackup "$bindir/$cmd" else ln -s evewine "$bindir/$cmd" fi fi [ "$bindir" != "$prefix/bin" ] && ln -s "$bindir/$cmd" "$prefix/bin/$cmd" if [ ! "$cmd" = "evewine" ] ;then oexec=$(grep Exec= ./${cmd%.*}.desktop) sed -i s,$oexec,Exec=$prefix/bin/$cmd, ./${cmd%.*}.desktop install -m 0644 "./${cmd%.*}.desktop" "$prefix/share/applications/" fi done for icons in $(find . -type f -name '*.png') ;do install -D -m 0644 "$icons" "$prefix/share/${icons#*/}" done if [ -x $(which gtk-update-icon-cache) ] ;then if [ -f "${prefix}/share/icons/hicolor/icon-theme.cache" ] ;then gtk-update-icon-cache -t -f "${prefix}/share/icons/hicolor" 2>/dev/null chmod 0644 "${prefix}/share/icons/hicolor/icon-theme.cache" fi fi } bootstrap_remove() { for icons in $(find . -type f -name '*.png') ;do rm -f "$prefix/share/${icons#*/}" done for cmd in backup launcher.sh regedit restore wine winecfg winetricks ;do cmd=eve$cmd rm -fv "$prefix/bin/$cmd" if [ ! "$cmd" = "evewine" ] ;then rm -f "$prefix/share/applications/${cmd%.*}.desktop" fi done printf "\nRemove $destdir...\n" rm -rf "$destdir" } build_lib() { if [ ! -r "./evelauncher-$elver.tar.gz" ] ;then printf "\nDownload evelauncher-$elver.tar.gz...\n\n" $dltool https://binaries.eveonline.com/evelauncher-$elver.tar.gz fi rcsum="$(sha256sum ./evelauncher-$elver.tar.gz| cut -d' ' -f1)" if [ "$rcsum" != "$elcsum" ] ;then printf "\n\nError: Checksum evelauncher-$elver.tar.gz mismatch!" printf "\nLeaving.\n\n" exit 0 fi printf "\nExtract evelauncher-$elver.tar.gz..." tar xf evelauncher-$elver.tar.gz echo "done." printf "\nClean up evelauncher directory..." cd evelauncher/ rm -f ./*.a ./*.la ./*.pem ./*.prl ./libxcb* cp -f ../evelauncher.sh.real ./evelauncher.sh chmod 0755 ./* chmod 0644 ./*.qm ./*.conf ./errorpage/* echo "done." printf "\nReplace identical files with symbolic links..." ln -sf evelauncher.sh LogLite.sh ln -sf libicudata.so.55.1 libicudata.so ln -sf libicudata.so.55.1 libicudata.so.55 ln -sf libicui18n.so.55.1 libicui18n.so ln -sf libicui18n.so.55.1 libicui18n.so.55 ln -sf libicuuc.so.55.1 libicuuc.so ln -sf libicuuc.so.55.1 libicuuc.so.55 ln -sf libgpr.so.6.0.0 libgpr.so ln -sf libgpr.so.6.0.0 libgpr.so.6 ln -sf libgrpc++.so.1.12.0 libgrpc++.so ln -sf libgrpc++.so.1.12.0 libgrpc++.so.1 ln -sf libgrpc++.so.1.12.0 libgrpc++.so.6 ln -sf libgrpc.so.6.0.0 libgrpc.so ln -sf libgrpc.so.6.0.0 libgrpc.so.6 ln -sf libpng12.so.0.54.0 libpng12.so.0 ln -sf libprotobuf.so.16.0.0 libprotobuf.so ln -sf libprotobuf.so.16.0.0 libprotobuf.so.16 echo "done." printf "\nRemove unneeded symbols from files..." find ./ -maxdepth 1 -type f -exec strip -s {} 2>/dev/null \; echo "done." printf "\nRepack evelauncher-$elver.tar.gz..." cd ../ rm evelauncher-$elver.tar.gz tar czf evelauncher-$elver.tar.gz evelauncher/ rm -rf evelauncher/ printf "done.\n\n" } get_dxvk() { if [ ! -r "./dxvk-$dvver.tar.gz" ] ;then printf "\nDownload dxvk-$dvver.tar.gz...\n\n" $dltool https://github.com/doitsujin/dxvk/releases/download/v$dvver/dxvk-$dvver.tar.gz fi rcsum="$(sha256sum ./dxvk-$dvver.tar.gz| cut -d' ' -f1)" if [ "$rcsum" != "$dvcsum" ] ;then printf "\n\nWarning: Checksum dxvk-$dvver.tar.gz mismatch, ignored.\n" rm ./dxvk-$dvver.tar.gz 2>/dev/null || true fi } check_req() { dltool=$(which curl 2>/dev/null || which wget 2>/dev/null || true) case ${dltool##*/} in curl) dltool="$dltool -L -O" ;; wget) dltool="$dltool -nc" ;; *) printf "\nError: curl or wget not found. One of them are needed for downloading sources." printf "\n Please install curl or wget with your Package Manager.\n" printf "\nLeaving.\n\n" exit 0 ;; esac req="7z lsof " until [ -z "$req" ];do i=${req%% *} [ $(which $i &>/dev/null; echo $?) -ne 0 ] && mreq="$mreq$i\n" req=${req#* } done if [ ! -z $mreq ] ;then printf "\nError: Following requirements are missing:\n" printf "\n$mreq\n" read -p 'Install anyway? (y/N) ' key if [ "x$(echo $key | tr [:upper:] [:lower:])" != "xy" ] ;then printf "\nLeaving.\n\n" exit 0 fi fi } prefix="/usr" destdir="/opt/evesetup" bindir="$destdir/bin" libdir="$destdir/lib" docdir="$destdir/doc" qtver="5.12" elver="" elcsum="" dvver="" dvcsum="" rcsum="" key="" if [ $(id -u) -ne 0 ] ;then printf "\nEVE Online Launcher Setup need root permissions.\n\n" exit 0 fi if [ -d "$destdir" ] ;then printf "\n" read -p 'Remove EVE Online Launcher Setup? (Y/n) ' key if [ "x$(echo $key | tr [:upper:] [:lower:])" != "xn" ] ;then printf "\nRemoving...\n\n" bootstrap_remove fi else printf "\n" read -p 'Install EVE Online Launcher Setup? (Y/n) ' key if [ "x$(echo $key | tr [:upper:] [:lower:])" != "xn" ] ;then printf "\nInstalling...\n" check_req build_lib get_dxvk bootstrap_install printf "\nYou can now start EVE Online Launcher and his Tools:\n\n" for cmd in *.desktop ;do oexec=$(sed -rn 's,^Exec=,,;s,.*/,,p' $cmd) [ ! "$oexec" = "evelauncher.sh" ] && printf " $oexec\t- $(sed -rn 's,^Comment=,,p' $cmd)\n" done printf "\n evelauncher.sh\t- EVE Online Launcher\n" fi fi printf "\nDone.\n\n"