gramps/windows/nsis/gramps-build.bat
2007-06-19 13:53:21 +00:00

391 lines
12 KiB
Batchfile

@echo off
rem
rem Filename: gramps-build.bat
rem Author: Steve Hall [ digitect dancingpaper com ]
rem Date: (See timestamp in :CHOOSE)
rem
rem Documentation
rem License {{{1
rem --------
rem This program is free software; you can redistribute it and/or
rem modify it under the terms of the GNU General Public License as
rem published by the Free Software Foundation; either version 2 of the
rem License, or (at your option) any later version.
rem [ http://www.gnu.org/licenses/gpl.html ]
rem
rem This program is distributed in the hope that it will be useful,
rem but WITHOUT ANY WARRANTY; without even the implied warranty of
rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
rem General Public License for more details.
rem
rem You should have received a copy of the GNU General Public License
rem along with this program; if not, write to the Free Software
rem Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
rem 02111-1307, USA.
rem
rem Usage {{{1
rem ------
rem This script automates the build process and creation of an
rem installer as much as possible, downloading sources and making
rem assumptions where necessary. To use it, the following are
rem required:
rem
rem o Windows NT/2K/XP (we no longer support 95/98/ME)
rem
rem o These GNU tools on path:
rem - gzip/gunzip
rem - tar (GNU version >= 1.13.10)
rem - sed
rem - wget
rem
rem o The Nullsoft Installer.
rem
rem o Adjust the variables in :ENVIRONMENT (below) to fit your
rem preferences and installation conditions.
rem
rem 1}}}
rem Initialization
rem Version and Personal Environment (*** FIX ME!! ***) {{{1
echo -----------------------------------------------------------------
echo Version and Personal environment...
echo.
rem *****************************************************
rem * MAKE ALL ADJUSTMENTS IN THIS SECTION! *
rem version (also used for location
set VERSION=0
set VERSIONSUB=0
set VERSIONPT=0
set VERSIONBUILD=0
rem path to Nullsoft Installer (NSIS)
set NSIS=C:\PROGRA~1\NSIS
rem path to Nullsoft customized files
set CUSTOM=C:\DOCUME~1\HALLS~1.PER\_seh\devel\gramps
rem path to Python
if "%PYTHONPATH%"=="" echo Manually setting $PYTHONPATH...
if "%PYTHONPATH%"=="" set PYTHONPATH=C:\Python25
rem * END OF ADJUSTMENTS SECTION *
rem ******************************************************
rem Initial Environment {{{1
echo -----------------------------------------------------------------
echo Initial environment...
echo.
rem force Win NT/2K/XP
if not "%OS%"=="Windows_NT" echo Windows NT/2K/XP required, unable to continue.
if not "%OS%"=="Windows_NT" goto QUIT
rem program name
set PROG=gramps
rem save system PATH
set PATHORIG=%PATH%
rem set build path (location of this file and tarball)
set BUILDPATH=%CD%
rem cat for general filename
set VERSIONNAME=%PROG%-%VERSION%.%VERSIONSUB%.%VERSIONPT%
rem Verify {{{1
echo -----------------------------------------------------------------
echo Verifying environment and utilities available...
echo.
echo %%BUILDPATH%% : %BUILDPATH%
echo %%VERSIONNAME%% : %VERSIONNAME%
echo %%NSIS%% : %NSIS%
echo %%CUSTOM%% : %CUSTOM%
rem date
for /F "TOKENS=1* DELIMS= " %%A in ('date/t') do set MYDAYNAME=%%A
for /F "TOKENS=2* DELIMS= " %%A in ('date/t') do set MYMDY=%%A
for /f "TOKENS=3* DELIMS=/" %%A in ('echo %MYMDY%') do set MYYEAR=%%A
for /f "TOKENS=1* DELIMS=/" %%A in ('echo %MYMDY%') do set MYMONTH=%%A
for /f "TOKENS=2* DELIMS=/" %%A in ('echo %MYMDY%') do set MYDAY=%%A
rem time
for /F "TOKENS=1* DELIMS=:" %%A in ('time/t') do set MYHOUR=%%A
for /F "TOKENS=2* DELIMS=: " %%A in ('time/t') do set MYMINUTE=%%A
echo Date : %MYYEAR%-%MYMONTH%-%MYDAY%
echo Time : %MYHOUR%:%MYMINUTE%
echo Build version : %VERSIONBUILD%
echo.
set TRY=gzip.exe
for %%A in (%TRY%) do set YES=%%~$PATH:A
if "%YES%"=="" goto UTILHALT
echo Found %TRY%...
set TRY=gunzip.exe
for %%A in (%TRY%) do set YES=%%~$PATH:A
if "%YES%"=="" goto UTILHALT
echo Found %TRY%...
set TRY=sed.exe
for %%A in (%TRY%) do set YES=%%~$PATH:A
if "%YES%"=="" goto UTILHALT
echo Found %TRY%...
set TRY=tar.exe
for %%A in (%TRY%) do set YES=%%~$PATH:A
if "%YES%"=="" goto UTILHALT
echo Found %TRY%...
set TRY=wget.exe
for %%A in (%TRY%) do set YES=%%~$PATH:A
if "%YES%"=="" goto UTILHALT
echo Found %TRY%...
echo.
set /P CH=Continue? [Y/N]
if /I "%CH%"=="Y" goto CHOOSE
:UTILHALT
if "%YES%"=="" echo Utility %TRY% not found on PATH, unable to continue.
echo.
echo Quitting...
echo.
goto QUIT
rem }}}1
rem Procedures
rem CHOOSE {{{1
:CHOOSE
cls
echo.
echo ______________________________________________________________________________
echo Updated: 2007-06-18 07:09:16-0400
echo.
echo Please select a choice:
echo.
echo [1] Clean build location
echo [2] Extract source tarballs
echo [3] Build source
echo [N] Nullsoft Installer
echo.
echo [R]emove existing installation
echo.
echo [A]uto
echo [Q]uit
echo.
echo ______________________________________________________________________________
echo.
:WinNT
set /P CH=Please enter choice above...
if /I "%CH%"=="Q" goto QUIT
if /I "%CH%"=="A" goto AUTO
if /I "%CH%"=="R" goto REMOVE
if /I "%CH%"=="N" goto NSIS
if /I "%CH%"=="3" goto BUILD
if /I "%CH%"=="2" goto SOURCE
if /I "%CH%"=="1" goto CLEAN
goto WinNT
rem AUTO {{{1
:AUTO
echo -----------------------------------------------------------------
echo Setting Auto-Run...
echo.
set RETURN=no
rem CLEAN {{{1
:CLEAN
echo -----------------------------------------------------------------
echo Cleaning up build location (removing all directories and files)
echo.
if not exist %BUILDPATH%\%VERSIONNAME% echo (Nothing to clean.)
if exist %BUILDPATH%\%VERSIONNAME% rmdir /s /q %BUILDPATH%\%VERSIONNAME%
if not "%RETURN%"=="no" echo.
if not "%RETURN%"=="no" echo Build location cleaned. (Ctrl+C to quit)
if not "%RETURN%"=="no" pause
if not "%RETURN%"=="no" goto CHOOSE
rem SOURCE {{{1
:SOURCE
echo -----------------------------------------------------------------
echo Downloading and extracting source tarballs...
echo.
rem NOTE: tar -xzf does not always work
:SOURCES
echo %VERSIONNAME%.tar.gz...
if exist "%VERSIONNAME%.tar" goto TARBALL
if not exist "%VERSIONNAME%.tar.gz" echo.
if not exist "%VERSIONNAME%.tar.gz" echo Tarball not found, downloading...
if not exist "%VERSIONNAME%.tar.gz" echo.
if not exist "%VERSIONNAME%.tar.gz" wget -c http://superb-east.dl.sourceforge.net/sourceforge/gramps/%VERSIONNAME%.tar.gz
if not exist "%VERSIONNAME%.tar.gz" echo.
if not exist "%VERSIONNAME%.tar.gz" echo Download failed, unable to continue.
if not exist "%VERSIONNAME%.tar.gz" echo.
if not exist "%VERSIONNAME%.tar.gz" goto CHOOSE
if exist "%VERSIONNAME%.tar.gz" gunzip "%VERSIONNAME%.tar.gz"
echo tarball unzipped.
:TARBALL
if not exist "%VERSIONNAME%.tar" echo.
if not exist "%VERSIONNAME%.tar" echo Unable to continue, no tarball found.
if not exist "%VERSIONNAME%.tar" echo.
if not exist "%VERSIONNAME%.tar" goto CHOOSE
echo extracting...
tar -xvf %VERSIONNAME%.tar
if not "%RETURN%"=="no" echo.
if not "%RETURN%"=="no" echo Source tarballs unpacked. (Ctrl+C to quit)
if not "%RETURN%"=="no" pause
if not "%RETURN%"=="no" goto CHOOSE
rem BUILD {{{1
:BUILD
echo -----------------------------------------------------------------
echo Building...
echo.
rem TODO: This should happen on the user's machine, since the process
rem apparently embeds a number of paths into the result.
echo.
echo Translations...
echo.
rem TODO: Brian's script doesn't work for me...
rem cd "%BUILDPATH%\%VERSIONNAME%"
rem if exist "%CUSTOM%\grampsSetup.py" copy /Y "%CUSTOM%\grampsSetup.py" "%BUILDPATH%\%VERSIONNAME%"
rem if exist "%CUSTOM%\grampsSetup.py" echo Setting up language files (this could take a while)...
rem rem Use Brian's grampsSetup.py utility...
rem rem switches:
rem rem -r :: release
rem rem -c :: compile
rem rem -t :: set up the language files
rem rem Note: we use only "-t", we don't want to compile
rem if exist "%CUSTOM%\grampsSetup.py" python grampsSetup.py -t
echo.
echo Setting up language files...
echo.
cd "%BUILDPATH%\%VERSIONNAME%\po"
rem create the directories
for %%A in (*.po) do if not exist lang\%%~nA\LC_MESSAGES mkdir lang\%%~nA\LC_MESSAGES
rem convert .po to gramps.mo (in directories)
for %%A in (*.po) do %PYTHONPATH%\python %PYTHONPATH%\Tools\i18n\msgfmt.py -o lang\%%~nA\LC_MESSAGES\gramps.mo %%A & echo processing language %%~nA...
echo.
echo Attempting to update build level in const.py to "%VERSIONBUILD%"...
echo.
cd "%BUILDPATH%\%VERSIONNAME%\src"
sed -i -e "s/^\(version \s\+= \"%VERSION%\.%VERSIONSUB%\.%VERSIONPT%-\).\+\"/\1%VERSIONBUILD%\"/g" const.py
rem ren sedDOSSUX const.py
if not "%RETURN%"=="no" echo.
if not "%RETURN%"=="no" echo Did we enjoy building?
if not "%RETURN%"=="no" pause
if not "%RETURN%"=="no" goto CHOOSE
rem NSIS {{{1
:NSIS
echo -----------------------------------------------------------------
echo Nullsoft Installer creation
echo.
if exist %NSIS%\CON goto NSISFOUND
echo.
echo NSIS path not found. Unable to continue...
pause
goto CHOOSE
:NSISFOUND
echo copying customized NSIS files...
rem if not exist "%BUILDPATH%\%VERSIONNAME%\nsis" mkdir "%BUILDPATH%\%VERSIONNAME%\nsis"
rem copy /Y "%NSIS%\Contrib\Graphics\Icons\classic-install.ico" "%BUILDPATH%\%VERSIONNAME%\nsis\classic-install.ico"
rem copy /Y "%NSIS%\Contrib\Graphics\Icons\classic-uninstall.ico" "%BUILDPATH%\%VERSIONNAME%\nsis\classic-uninstall.ico"
rem copy /Y "%NSIS%\Contrib\Graphics\Header\win.bmp" "%BUILDPATH%\%VERSIONNAME%\nsis\win.bmp"
rem if exist "%CUSTOM%\nsis-splash.bmp" copy /Y "%CUSTOM%\nsis-splash.bmp" "%BUILDPATH%\%VERSIONNAME%\nsis\nsis-splash.bmp"
rem if exist "%CUSTOM%\nsis-checkboxes.bmp" copy /Y "%CUSTOM%\nsis-checkboxes.bmp" "%BUILDPATH%\%VERSIONNAME%\nsis\nsis-checkboxes.bmp"
rem TODO:
echo copying temporary, should end up in next release (?)
if not exist "%BUILDPATH%\%VERSIONNAME%\nsis\CON" mkdir "%BUILDPATH%\%VERSIONNAME%\nsis"
if exist "%CUSTOM%\gramps.nsi" copy /Y "%CUSTOM%\gramps.nsi" /Y "%BUILDPATH%\%VERSIONNAME%\nsis\gramps.nsi"
if exist "%CUSTOM%\ped24.ico" copy /Y "%CUSTOM%\ped24.ico" /Y "%BUILDPATH%\%VERSIONNAME%\src\images\ped24.ico"
if exist "%CUSTOM%\gcheck.py" copy /Y "%CUSTOM%\gcheck.py" /Y "%BUILDPATH%\%VERSIONNAME%\nsis\gcheck.py"
echo building installer...
cd "%BUILDPATH%\%VERSIONNAME%\nsis"
%NSIS%\makensis gramps.nsi
if not "%RETURN%"=="no" echo.
if not "%RETURN%"=="no" echo Pausing... did we enjoy building the Nullsoft installer? (Ctrl+C to quit)
if not "%RETURN%"=="no" pause
if not "%RETURN%"=="no" goto CHOOSE
rem REMOVE {{{1
:REMOVE
rem this is NOT automatic
if "%RETURN%"=="no" goto CHOOSE
echo -----------------------------------------------------------------
echo Removing existing installation
echo.
echo removing "%ProgramFiles%\gramps"
if exist "%ProgramFiles%\gramps" rmdir /s /q "%ProgramFiles%\gramps"
echo removing "%USERPROFILE%\Start Menu\Programs\GRAMPS"
if exist "%USERPROFILE%\Start Menu\Programs\GRAMPS" rmdir /s /q "%USERPROFILE%\Start Menu\Programs\GRAMPS"
echo removing "%TEMP%\gramps-install.ini"
if exist "%TEMP%\gramps-install.ini" del "%TEMP%\gramps-install.ini"
echo removing "%TEMP%\gcheck.py"
if exist "%TEMP%\gcheck.py" del "%TEMP%\gcheck.py"
if not "%RETURN%"=="no" echo.
if not "%RETURN%"=="no" echo Pausing... did we enjoy removing existing installation? (Ctrl+C to quit)
if not "%RETURN%"=="no" pause
if not "%RETURN%"=="no" goto CHOOSE
rem QUIT {{{1
:QUIT
echo.
echo Finished.
echo.
cd "%BUILDPATH%"
rem clear variables
set ARCHIVEDRIVE=
set BUILDDRIVE=
set BUILDPATH=
set BUILDTYPE=
set VERSION=
set VERSIONNAME=
set VERSIONSUB=
set CH=
set FNAME=
set GCC=
set LICENSEFILE=
set MYDAY=
set MYMONTH=
set MYYEAR=
set MYDAYNAME=
set MDY=
set NSIS=
set CUSTOM=
rem set PATHORIG=
set RETURN=
set TRY=
set YES=
rem reset path if backup exists
rem if "%PATHORIG%"=="" goto END
set PATH=%PATHORIG%
set PATHORIG=
rem 1}}}
:END
rem vim:foldmethod=marker