Created
January 17, 2016 22:27
-
-
Save Juppit/39a41f00ede127013cc1 to your computer and use it in GitHub Desktop.
Build Cygwin Environment
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
:: Author: Peter Dobler (@Juppit) | |
:: e-Mail: esp8266-mail@t-online.de | |
:: | |
:: Last edit: 15/01/2016 | |
@ECHO off | |
setlocal | |
CALL :CHECK_ARCH | |
:: edit this part if needed | |
SET CYGWIN_DRIVE=C | |
SET CYGWIN_DIR=Cygwin%PROZ_ARCH% | |
SET CYGWIN_LPD=Cygwin%PROZ_ARCH%.LPD | |
SET MIRROR=ftp://linux.rz.ruhr-uni-bochum.de/cygwin/ | |
IF NOT [%1]==[] set MIRROR=%1 | |
IF NOT [%2]==[] set CYGWIN_DIR=%2 | |
IF NOT [%3]==[] set CYGWIN_LPD=%3 | |
SET CYGWIN_PATH_CYG=%CYGWIN_DRIVE%:/%CYGWIN_DIR%/ | |
SET CYGWIN_PATH_WIN=%CYGWIN_DRIVE%:\%CYGWIN_DIR%\ | |
SET APT_CYG=apt-cyg | |
SET CYGWIN_APT_CYG=%CYGWIN_PATH_CYG%bin/%APT_CYG% | |
SET CYGWIN_BASH_WIN=%CYGWIN_DRIVE%:\%CYGWIN_DIR%\bin\bash.exe | |
GOTO START | |
:: Todo %2 --> Drive:\Path\Dir | |
REM modify / delete substring | |
SET modifiedstring=%oldstring:substring=replacestring% | |
SET %oldstring:substring=% | |
:: Some subroutines | |
:PRINT_HEAD | |
cls | |
ECHO ---------------------------------- | |
ECHO %~n0 %* | |
ECHO ---------------------------------- | |
GOTO :EOF | |
:CHECK_ARCH | |
SET PROZ_ARCH=0 | |
IF "%PROCESSOR_ARCHITECTURE%" == "AMD64" (SET PROZ_ARCH=64) ELSE ( | |
IF "%PROCESSOR_ARCHITECTURE%" == "IA64" (SET PROZ_ARCH=64) ELSE ( | |
IF "%PROCESSOR_ARCHITECTURE%" == "x86" (SET PROZ_ARCH=32) )) | |
IF "%PROCESSOR_ARCHITEW6432%" == "x86" (SET PROZ_ARCH=32) | |
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE | find /i "64" > nul | |
IF %errorlevel%==0 SET PROZ_ARCH=64 | |
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE | find /i "86" > nul | |
IF %errorlevel%==0 SET PROZ_ARCH=32 | |
GOTO :EOF | |
:CHECK_ADMIN | |
ECHO Check admin rights | |
OPENFILES > nul | |
IF ERRORLEVEL 1 ( | |
ECHO. You must be logged on as Administrator. | |
REM EXIT /B 1 | |
) | |
VER | FIND "Version 6." > nul | |
IF %ERRORLEVEL% == 0 ( | |
REM Newer than Vista | |
) | |
GOTO :EOF | |
:: Here we start | |
:START | |
CALL :PRINT_HEAD | |
SET M=0 | |
:M_ARCH | |
ECHO. | |
ECHO ...................... | |
ECHO Prozessor architecture | |
ECHO ...................... | |
ECHO 0 - %PROZ_ARCH% bit | |
ECHO. | |
ECHO 1 - 32 bit | |
ECHO 2 - 64 bit | |
ECHO. | |
SET /P M=select and/or press ENTER: | |
IF %M%==1 (SET PROZ_ARCH=32) ELSE ( | |
IF %M%==2 (SET PROZ_ARCH=64) ELSE ( | |
IF NOT %M%==0 (GOTO M_ARCH) )) | |
SET SETUP=setup-x86.exe | |
IF %PROZ_ARCH% == 64 SET SETUP=setup-x86_64.exe | |
SET SETUP_URL=https://cygwin.com/%SETUP% | |
SET M=0 | |
IF %CYGWIN_DRIVE%==C (SET M=1) ELSE ( | |
IF %CYGWIN_DRIVE%==D (SET M=2) ELSE ( | |
IF %CYGWIN_DRIVE%==E (SET M=3) ELSE ( | |
IF %CYGWIN_DRIVE%==F (SET M=4) ELSE ( | |
IF %CYGWIN_DRIVE%==G (SET M=5) )))) | |
CALL :PRINT_HEAD | |
:M_DRIVE | |
ECHO. | |
ECHO .................. | |
ECHO Installation drive | |
ECHO .................. | |
ECHO 0 - %CYGWIN_DRIVE%: | |
ECHO. | |
IF EXIST C:\\nul ECHO 1 - C: | |
IF EXIST D:\\nul ECHO 2 - D: | |
IF EXIST E:\\nul ECHO 3 - E: | |
IF EXIST F:\\nul ECHO 4 - F: | |
IF EXIST G:\\nul ECHO 5 - G: | |
:: continue if you like | |
ECHO. | |
SET /P M=select and/or press ENTER: | |
IF %M%==1 (IF EXIST C:\\nul SET CYGWIN_DRIVE=C) ELSE ( | |
IF %M%==2 (IF EXIST D:\\nul SET CYGWIN_DRIVE=D) ELSE ( | |
IF %M%==3 (IF EXIST E:\\nul SET CYGWIN_DRIVE=E) ELSE ( | |
IF %M%==4 (IF EXIST F:\\nul SET CYGWIN_DRIVE=F) ELSE ( | |
IF %M%==5 (IF EXIST G:\\nul SET CYGWIN_DRIVE=G) ELSE ( | |
IF NOT %M%==0 (GOTO M_DRIVE) ))))) | |
CALL :PRINT_HEAD | |
ECHO (find mirrors at https://cygwin.com/mirrors.html) | |
SET M=0 | |
:M_MIRROR | |
ECHO ............................ | |
ECHO Select closest Cygwin mirror | |
ECHO ............................ | |
ECHO 0 - %MIRROR% | |
ECHO. | |
ECHO 1 - input URL | |
ECHO. | |
SET /P M=select and/or press ENTER: | |
IF NOT %M%==1 GOTO CHECK_MIRROR | |
SET /P MIRROR=inputURL and press ENTER: | |
GOTO MIRROR_OK | |
:CHECK_MIRROR | |
GOTO MIRROR_OK | |
REM most server don't answer ping | |
FOR /F "tokens=1,2,3 delims=/" %%i IN ("%MIRROR%") DO ( | |
set PROTOKOLL=%%i | |
set DOMAIN=%%j | |
) | |
ping %PROTOKOLL%//%DOMAIN% -n 1 >nul | |
IF %errorlevel%==0 GOTO MIRROR_OK | |
ECHO Sorry, host %PROTOKOLL%//%DOMAIN% is not reachable | |
GOTO M_MIRROR | |
REM | |
:MIRROR_OK | |
CALL :PRINT_HEAD | |
ECHO. | |
ECHO ....................... | |
ECHO Select Cygwin directory | |
ECHO ....................... | |
ECHO 0 - %CYGWIN_DRIVE%:\%CYGWIN_DIR% | |
ECHO. | |
ECHO 1 - input directory name | |
ECHO. | |
SET /P M=select and/or press ENTER: | |
IF NOT %M%==1 GOTO CYGWIN_DIR_OK | |
SET /P CYGWIN_DIR=input name and press ENTER: | |
:CYGWIN_DIR_OK | |
CALL :PRINT_HEAD | |
ECHO. | |
ECHO ......................... | |
ECHO Select database directory | |
ECHO ......................... | |
ECHO 0 - %CYGWIN_DRIVE%:\%CYGWIN_LPD% | |
ECHO. | |
ECHO 1 - input directory name | |
ECHO. | |
SET /P M=select and/or press ENTER: | |
IF NOT %M%==1 GOTO CYGWIN_LPD_OK | |
SET /P CYGWIN_LPD=input name and press ENTER: | |
:CYGWIN_LPD_OK | |
CALL :PRINT_HEAD | |
ECHO. | |
ECHO Setup Cygwin %PROZ_ARCH%-bit on %CYGWIN_PATH_WIN% | |
ECHO with cache on %CYGWIN_LPD% from %MIRROR% | |
pause | |
%CYGWIN_DRIVE%: | |
IF NOT EXIST %CYGWIN_PATH_WIN% mkdir %CYGWIN_PATH_WIN% | |
cd %CYGWIN_PATH_WIN% | |
SET POWER_SHELL=PowerShell.exe | |
where /Q %POWER_SHELL% | |
IF %errorlevel%==0 GOTO POWER_SHELL_START | |
ECHO. | |
ECHO To retrieve %SETUP% for you Windows %POWER_SHELL% is needed. | |
ECHO Download %SETUP% from %SETUP_URL% | |
ECHO Save it to %CYGWIN_PATH_WIN% | |
ECHO Then try %~n0 again... | |
pause | |
GOTO EOF | |
:POWER_SHELL_START | |
ECHO. | |
ECHO please wait for download %SETUP%... | |
powershell -Command (New-Object System.Net.WebClient).DownloadFile(\"%SETUP_URL%\", \"%SETUP%\") | |
:GET_SETUP_FILE_END | |
REM for testing only | |
goto GET_APT_CYG | |
::IF EXIST %CYGWIN_PATH_WIN%bin% goto GET_APT_CYG | |
ECHO. | |
ECHO Install cygwin on %CYGWIN_PATH_WIN% by %SETUP% | |
CALL %CYGWIN_PATH_WIN%%SETUP% -D -R %CYGWIN_PATH_WIN% -s %MIRROR1% -l %CYGWIN_PATH_WIN%%CYGWIN_LPD% -a %PROZ_ARCH% -q -n -B -C base | |
CALL %CYGWIN_PATH_WIN%%SETUP% -L -R %CYGWIN_PATH_WIN% -l %CYGWIN_PATH_WIN%%CYGWIN_LPD% -q -n -C base | |
IF %errorlevel%==0 (ECHO "Cygwin is now installed on %CYGWIN_PATH_WIN%") else (echo opps!) && pause | |
:GET_APT_CYG | |
::IF EXIST %CYGWIN_PATH_WIN%bin\%APT_CYG% goto GET_PACKAGES | |
ECHO Install %APT_CYG% | |
%CYGWIN_BASH_WIN% -l -c "lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > %CYGWIN_PATH_WIN%apt-cyg" | |
%CYGWIN_BASH_WIN% -l -c "install %CYGWIN_PATH_CYG%apt-cyg %CYGWIN_PATH_CYG%bin" | |
MOVE %CYGWIN_PATH_WIN%%APT_CYG% %CYGWIN_PATH_WIN%bin\ | |
%CYGWIN_BASH_WIN% -l -c chmod +x %CYGWIN_PATH_CYG%bin/apt-cyg | |
:GET_PACKAGES | |
ECHO Now get needed packages | |
:: install nano just to have it | |
%CYGWIN_BASH_WIN% -l %CYGWIN_APT_CYG% install nano | |
goto SET_REG | |
%CYGWIN_BASH_WIN% -l %CYGWIN_APT_CYG% install wget zip unzip rsync git > /dev/null | |
%CYGWIN_BASH_WIN% -l %CYGWIN_APT_CYG% install autoconf gperf bison flex patch make automake > /dev/null | |
%CYGWIN_BASH_WIN% -l %CYGWIN_APT_CYG% install texinfo libtool wget gawk > /dev/null | |
%CYGWIN_BASH_WIN% -l %CYGWIN_APT_CYG% install cygwin32-ncurses ncurses gcc-g++ > /dev/null | |
%CYGWIN_BASH_WIN% -l %CYGWIN_APT_CYG% install expat libexpat-devel > /dev/null | |
%CYGWIN_BASH_WIN% -l %CYGWIN_APT_CYG% install libncurses-devel libintl-devel libintl8 > /dev/null | |
:: next installs are needed by gcc-xtensa | |
%CYGWIN_BASH_WIN% -l %CYGWIN_APT_CYG% install zlib-devel libiconv-devel > /dev/null | |
%CYGWIN_BASH_WIN% -l %CYGWIN_APT_CYG% install bsdtar > /dev/null | |
:SET_REG | |
ECHO. | |
ECHO Set DriveCaseInsensitive | |
SET ScriptDirectory=%~dp0 | |
SET SCRIPT=SetCaseinsensitive.ps1 | |
SET ScriptPath=%ScriptDirectory%%SCRIPT% | |
ECHO New-ItemProperty -Path "hklm:\SYSTEM\CurrentControlSet\Control\Session Manager\kernel" -Name "obcaseinsensitive" -Value 0 -PropertyType DWORD -Force > SetCaseinsensitive.ps1 | |
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%ScriptPath%""' -Verb RunAs}"; | |
DEL %ScriptDirectory%%SCRIPT% | |
ECHO. | |
ECHO %~0 run successfull. | |
pause |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment