diff --git a/Readme.md b/Readme.md index f14f631..f451f9e 100644 --- a/Readme.md +++ b/Readme.md @@ -15,6 +15,8 @@ Directory contains various build scripts. * 7-Zip * NSIS * HTML Help Workshop (for PgAdmin documentation, included in Visual Studio) +* .NET 3.5 (for pg_probackup only) +* WiX toolset (for pg_probackup only) ## Patches @@ -35,3 +37,33 @@ If you want to use GIT: * GIT_BRANCH=[git branch name] -- if you sets this variables we will download source from git * GIT_PATH=[git path] -- git URL, git://git.postgresql.org/git/postgresql.git by default + +### probackup build +You can specify several environmental variables depending on desirable result: + +* PROBACKUP_VERSION=[2.1.3/2.1.5] - pg_probackup full version +* PROBACKUP_EDITION=[vanilla/std/enterprise] -- fork to build probackup for, default 'vanilla' +* PROBACKUP_PATCH_POSTGRESQL=[YES/NO] -- apply probackup specific patches, default NO +* GIT_COMMIT=commit -- git commit, to build source from + +To build pg_probackup installer for vanilla PostgreSQL, run: + +``` +SET SDK=MSVC2013 +SET PROBACKUP_VERSION=2.1.5 +SET PG_MAJOR_VERSION=11 +SET PG_PATCH_VERSION=4 +SET PROBACKUP_EDITION=vanilla +``` + +To build pg_probackup installer for PostgresPro Standart, run: + +``` +SET SDK=MSVC2013 +SET PROBACKUP_VERSION=2.1.5 +SET PG_MAJOR_VERSION=11 +SET PG_PATCH_VERSION=4 +SET PROBACKUP_EDITION=std +SET GIT_PATH=https://git.postgrespro.ru/pgpro-dev/postgrespro.git +SET GIT_BRANCH=PGPRO11_4_1 +``` diff --git a/build/helpers/dependencies.cmd b/build/helpers/dependencies.cmd index 47126fb..b1e8ab5 100644 --- a/build/helpers/dependencies.cmd +++ b/build/helpers/dependencies.cmd @@ -151,6 +151,9 @@ MKDIR %DEPENDENCIES_BIN_DIR%\openssl\lib\VC cp -av out32dll/* %DEPENDENCIES_BIN_DIR%\openssl\lib\VC || GOTO :ERROR cp -v out32dll/ssleay32.lib %DEPENDENCIES_BIN_DIR%\openssl\lib\VC\ssleay32MD.lib || GOTO :ERROR cp -v out32dll/libeay32.lib %DEPENDENCIES_BIN_DIR%\openssl\lib\VC\libeay32MD.lib || GOTO :ERROR +MKDIR %DEPENDENCIES_BIN_DIR%\openssl\bin +cp -av out32dll/openssl.exe %DEPENDENCIES_BIN_DIR%\openssl\bin || GOTO :ERROR +cp -av out32dll/*32.dll %DEPENDENCIES_BIN_DIR%\openssl\bin || GOTO :ERROR CD /D %DOWNLOADS_DIR% 7z a -r %DOWNLOADS_DIR%\%DEPS_ZIP% %DEPENDENCIES_BIN_DIR%\openssl -y diff --git a/build/helpers/postgres.cmd b/build/helpers/postgres.cmd index c7951a8..14a2a7d 100644 --- a/build/helpers/postgres.cmd +++ b/build/helpers/postgres.cmd @@ -20,23 +20,26 @@ GOTO :NOLOAD :BUILD_POSTGRESQL TITLE Building PostgreSQL... CD /D %DOWNLOADS_DIR% + IF "%GIT_PATH%"=="" ( SET GIT_PATH=git://git.postgresql.org/git/postgresql.git ) + IF NOT "%GIT_BRANCH%"=="" ( -rm -rf %BUILD_DIR%\postgresql -MKDIR %BUILD_DIR%\postgresql -MKDIR %BUILD_DIR%\postgresql\postgresql-%PGVER% -git clone -b %GIT_BRANCH% %GIT_PATH% %BUILD_DIR%\postgresql\postgresql-%PGVER% +rm -rf %BUILD_DIR%\postgresql || GOTO :ERROR +MKDIR %BUILD_DIR%\postgresql || GOTO :ERROR +MKDIR %BUILD_DIR%\postgresql\postgresql-%PGVER% || GOTO :ERROR +git clone --depth=1 -b %GIT_BRANCH% %GIT_PATH% %BUILD_DIR%\postgresql\postgresql-%PGVER% || GOTO :ERROR CD /D %BUILD_DIR%\postgresql\*%PGVER%* || GOTO :ERROR GOTO :NOTAR ) wget --no-check-certificate %PGURL% -O postgresql-%PGVER%.tar.bz2 || GOTO :ERROR -rm -rf %BUILD_DIR%\postgresql -MKDIR %BUILD_DIR%\postgresql -tar xf postgresql-%PGVER%.tar.bz2 -C %BUILD_UDIR%/postgresql +rm -rf %BUILD_DIR%\postgresql || GOTO :ERROR +MKDIR %BUILD_DIR%\postgresql || GOTO :ERROR +tar xf postgresql-%PGVER%.tar.bz2 -C %BUILD_UDIR%/postgresql || GOTO :ERROR CD /D %BUILD_DIR%\postgresql\*%PGVER%* || GOTO :ERROR + :NOTAR IF %ONE_C% == YES ( IF %HAVE_PGURL% == 1 SET PGTARNAME=postgrespro-1c @@ -51,16 +54,6 @@ IF %ONE_C% == YES ( :DONE_1C_PATCH -IF %HAVE_PGURL% == 0 ( - cp -va %ROOT%/patches/postgresql/%PG_MAJOR_VERSION%/series . - IF NOT EXIST series GOTO :DONE_POSTGRESQL_PATCH - FOR /F %%I IN (series) do ( - ECHO %%I - cp -va %ROOT%/patches/postgresql/%PG_MAJOR_VERSION%/%%I . - patch -p1 < %%I || GOTO :ERROR - ) -) - :DONE_POSTGRESQL_PATCH >src\tools\msvc\config.pl ECHO use strict; >>src\tools\msvc\config.pl ECHO use warnings; @@ -72,31 +65,18 @@ IF %HAVE_PGURL% == 0 ( >>src\tools\msvc\config.pl ECHO ^# blocksize ^=^> 8, >>src\tools\msvc\config.pl ECHO ^# wal_blocksize ^=^> 8, >>src\tools\msvc\config.pl ECHO ^# wal_segsize ^=^> 16, ->>src\tools\msvc\config.pl ECHO ldap ^=^> 1, ->>src\tools\msvc\config.pl ECHO nls ^=^> '%DEPENDENCIES_BIN_DIR%\libintl', +>>src\tools\msvc\config.pl ECHO ldap ^=^> undef, +>>src\tools\msvc\config.pl ECHO nls ^=^> undef, >>src\tools\msvc\config.pl ECHO tcl ^=^> undef, -IF %SDK% == SDK71 GOTO :DISABLE_PERL -IF %ARCH% == X86 GOTO :DISABLE_PERL -IF %ARCH% == X64 (>>src\tools\msvc\config.pl ECHO perl ^=^> '%PERL64_PATH%', ) -GOTO :PERL_CONF_DONE -:DISABLE_PERL -IF %ARCH% == X86 (>>src\tools\msvc\config.pl ECHO perl ^=^> undef, ) -:PERL_CONF_DONE -IF %ARCH% == X64 (>>src\tools\msvc\config.pl ECHO python ^=^> '%PYTHON64_PATH%', ) -IF %ARCH% == X86 (>>src\tools\msvc\config.pl ECHO python ^=^> '%PYTHON32_PATH%', ) >>src\tools\msvc\config.pl ECHO openssl ^=^> '%DEPENDENCIES_BIN_DIR%\openssl', ->>src\tools\msvc\config.pl ECHO uuid ^=^> '%DEPENDENCIES_BIN_DIR%\uuid', ->>src\tools\msvc\config.pl ECHO xml ^=^> '%DEPENDENCIES_BIN_DIR%\libxml2', ->>src\tools\msvc\config.pl ECHO xslt ^=^> '%DEPENDENCIES_BIN_DIR%\libxslt', ->>src\tools\msvc\config.pl ECHO iconv ^=^> '%DEPENDENCIES_BIN_DIR%\iconv', ->>src\tools\msvc\config.pl ECHO zlib ^=^> '%DEPENDENCIES_BIN_DIR%\zlib', ->>src\tools\msvc\config.pl ECHO icu ^=^> '%DEPENDENCIES_BIN_DIR%\icu' +>>src\tools\msvc\config.pl ECHO uuid ^=^> undef, +>>src\tools\msvc\config.pl ECHO xml ^=^> undef, +>>src\tools\msvc\config.pl ECHO xslt ^=^> undef, +>>src\tools\msvc\config.pl ECHO iconv ^=^> undef, +>>src\tools\msvc\config.pl ECHO zlib ^=^> '%DEPENDENCIES_BIN_DIR%\zlib' >>src\tools\msvc\config.pl ECHO ^}; >>src\tools\msvc\config.pl ECHO 1^; -REM IF %ONE_C% == YES ( -REM mv -v contrib\fulleq\fulleq.sql.in.in contrib\fulleq\fulleq.sql.in || GOTO :ERROR -REM ) SET DEPENDENCIES_BIN_DIR=%DEPENDENCIES_BIN_DIR:\=/% cp -va %DEPENDENCIES_BIN_DIR%/icu/include/* src\include\ || GOTO :ERROR @@ -160,6 +140,8 @@ REM remove python3 extensions rm -rf %BUILD_UDIR%/distr_%ARCH%_%PGVER%/postgresql/share/extension/*python3* || GOTO :ERROR rm -rf %BUILD_UDIR%/distr_%ARCH%_%PGVER%/postgresql/lib/*python3* || GOTO :ERROR +GOTO :DONE + SET WGET=wget --no-check-certificate rem download help sources diff --git a/build/helpers/probackup.cmd b/build/helpers/probackup.cmd new file mode 100644 index 0000000..90119b2 --- /dev/null +++ b/build/helpers/probackup.cmd @@ -0,0 +1,55 @@ +CALL %ROOT%\build\helpers\setvars.cmd + +SET PROBACKUP_URL=https://github.com/postgrespro/pg_probackup/tarball/%PROBACKUP_VERSION% +SET PRODUCT_NAME="" + +IF %PROBACKUP_EDITION% == vanilla ( + SET PRODUCT_NAME=PostgreSQL +) + +IF %PROBACKUP_EDITION% == std ( + SET PRODUCT_NAME=PostgresPro +) + +IF %PRODUCT_NAME% == "" ( + ECHO Invalid PROBACKUP_EDITION: %PROBACKUP_EDITION% + GOTO :ERROR +) + +SET BIN_DIR=%BUILD_DIR%\pg_probackup_%PROBACKUP_EDITION%_%PG_MAJOR_VERSION%_%PROBACKUP_VERSION%_%ARCH% + +echo Download sources ... + +rm -rf %BUILD_DIR%\pg_probackup || GOTO :ERROR +MKDIR %BUILD_DIR%\pg_probackup || GOTO :ERROR +MKDIR %BUILD_DIR%\pg_probackup\pg_probackup-%PG_MAJOR_VERSION%-%PROBACKUP_VERSION% || GOTO :ERROR + +CD /D %BUILD_DIR%\pg_probackup\pg_probackup-%PG_MAJOR_VERSION%-%PROBACKUP_VERSION% || GOTO :ERROR + +git clone https://github.com/postgrespro/pg_probackup . || GOTO :ERROR +git checkout %PROBACKUP_VERSION% || GOTO :ERROR + +IF NOT "%GIT_COMMIT%"=="" ( + git checkout %GIT_COMMIT% || GOTO :ERROR +) + + +perl gen_probackup_project.pl %BUILD_DIR%\postgresql\postgresql-%PGVER% || GOTO :ERROR + +rm -rf %BIN_DIR% || GOTO :ERROR +MKDIR %BIN_DIR% || GOTO :ERROR + +copy %BUILD_DIR%\postgresql\postgresql-%PGVER%\Release\pg_probackup\pg_probackup.exe %BIN_DIR% || GOTO :ERROR +copy %BUILD_DIR%\postgresql\postgresql-%PGVER%\Release\libpq\libpq.dll %BIN_DIR% || GOTO :ERROR +copy %DEPENDENCIES_BIN_DIR%\zlib\lib\zlib1.dll %BIN_DIR% || GOTO :ERROR +copy %DEPENDENCIES_BIN_DIR%\openssl\lib\libeay32.dll %BIN_DIR% || GOTO :ERROR +copy %DEPENDENCIES_BIN_DIR%\openssl\lib\ssleay32.dll %BIN_DIR% || GOTO :ERROR + +goto :DONE + +:ERROR +ECHO Failed with error #%errorlevel%. +EXIT /b %errorlevel% + +:DONE +ECHO Done. diff --git a/build/helpers/probackup_installer.cmd b/build/helpers/probackup_installer.cmd new file mode 100644 index 0000000..1ffb21c --- /dev/null +++ b/build/helpers/probackup_installer.cmd @@ -0,0 +1,63 @@ +CALL %ROOT%\build\helpers\setvars.cmd + +echo. +echo Building PG_PROBACKUP Installer... + +SET WIXDIR=C:\Program Files (x86)\WiX Toolset v3.11\bin +SET PRODUCT_NAME="" + +IF %PROBACKUP_EDITION% == vanilla ( + SET PRODUCT_NAME=PostgreSQL + SET PG_DEF_BRANDING=PostgreSQL%PG_MAJOR_VERSION% +) + +IF %PROBACKUP_EDITION% == std ( + SET PRODUCT_NAME=PostgresPro + SET PG_DEF_BRANDING=PostgresPro%PG_MAJOR_VERSION% +) + +IF %PRODUCT_NAME% == "" ( + ECHO Invalid PROBACKUP_EDITION: %PROBACKUP_EDITION% + GOTO :ERROR +) + +SET PG_REG_KEY=SOFTWARE\Postgres Professional\%ARCH%\%PRODUCT_NAME%\%PG_MAJOR_VERSION%\Installations\postgresql-%PG_MAJOR_VERSION% +SET BIN_DIR=%BUILD_DIR%\pg_probackup_%PROBACKUP_EDITION%_%PG_MAJOR_VERSION%_%PROBACKUP_VERSION%_%ARCH% + +rm -rf %BUILD_DIR%\pg_probackup\installer || GOTO :ERROR +MKDIR %BUILD_DIR%\pg_probackup\installer + +CD /D %ROOT%\wix +cp -av pg_probackup/* %BUILD_DIR%\pg_probackup\installer || GOTO :ERROR +CD /D %BUILD_DIR%\pg_probackup\installer + +echo. +echo Building Full Installer... + +>Files.wxs ECHO ^<^?xml version="1.0" encoding="UTF-8"?^> +>>Files.wxs ECHO ^ +>>Files.wxs ECHO ^<^?include Variables.wxi?^> +>>Files.wxs ECHO ^ +>>Files.wxs ECHO ^ +>>Files.wxs ECHO ^<^Component Id="ProductComponent" Guid="$(var.ComponentCode)" Win64="$(var.Win64)"^> +perl genfilelist.pl %BIN_DIR%/*.* Files.wxs +>>Files.wxs ECHO ^<^/Component^> +>>Files.wxs ECHO ^<^/DirectoryRef^> +>>Files.wxs ECHO ^<^/Fragment^> +>>Files.wxs ECHO ^<^/Wix^> +"%WIXDIR%\candle" -nologo -dAPPVERSION="%PROBACKUP_VERSION%" -dPG_REG_KEY="%PG_REG_KEY%" -dPG_DEF_BRANDING="%PG_DEF_BRANDING%" Product_separate.wxs Files.wxs || goto :ERROR + +SET INS_FILE=pg-probackup-%PROBACKUP_EDITION%-%PG_MAJOR_VERSION%-%PROBACKUP_VERSION%-standalone-en.msi + +"%WIXDIR%\light" -sice:ICE03 -sice:ICE25 -sice:ICE82 -sw1101 -nologo -ext WixUIExtension -cultures:en-us -o %INS_FILE% Files.wixobj Product_separate.wixobj || goto :ERROR + +cp -av pg-probackup-%PROBACKUP_EDITION%-%PG_MAJOR_VERSION%-%PROBACKUP_VERSION%-standalone-en.msi %BUILD_DIR%\installers\ || goto :ERROR + +goto :DONE + +:ERROR +ECHO Failed with error #%errorlevel%. +EXIT /b %errorlevel% + +:DONE +ECHO Done. diff --git a/build/helpers/setvars.cmd b/build/helpers/setvars.cmd index 50c9c18..d6be9cc 100644 --- a/build/helpers/setvars.cmd +++ b/build/helpers/setvars.cmd @@ -17,7 +17,7 @@ SET PYTHON32_PATH=C:\Python27x86 SET PYTHON64_PATH=C:\Python27x64 SET ZIP_PATH=C:\Program Files\7-Zip;C:\Program Files (x86)\7-Zip SET NSIS_PATH=C:\Program Files (x86)\NSIS -SET MSYS2_PATH=C:\msys64\mingw32\bin;C:\msys64\mingw64\bin;C:\msys32\usr\bin;C:\msys64\usr\bin +SET MSYS2_PATH=D:\msys64\mingw32\bin;D:\msys64\mingw64\bin;C:\msys32\usr\bin;D:\msys64\usr\bin SET PATH=%PATH%;%ZIP_PATH%;%MSYS2_PATH%;%NSIS_PATH% SET PERL5LIB=. diff --git a/build/run.cmd b/build/run.cmd index c1bd85f..e187604 100644 --- a/build/run.cmd +++ b/build/run.cmd @@ -14,6 +14,8 @@ IF "%~1" == "4" GOTO :OK IF "%~1" == "5" GOTO :OK IF "%~1" == "6" GOTO :OK IF "%~1" == "7" GOTO :OK +IF "%~1" == "8" GOTO :OK +IF "%~1" == "9" GOTO :OK SET USG=1 @@ -27,6 +29,8 @@ IF DEFINED USG ( ECHO 5: Build installer PgAdmin3 ECHO 6: Make PostgreSQL and PgAdmin3 archives ECHO 7: Build pgbouncer + ECHO 8: Build pg_probackup + ECHO 9: Build pg_probackup installer PAUSE EXIT /b 1 ) @@ -95,6 +99,16 @@ IF "%~1"=="7" ( CMD.EXE /C %ROOT%\build\helpers\pgbouncer.cmd || GOTO :ERROR ) +IF "%~1"=="8" ( + TITLE Build PG_PROBACKUP + CMD.EXE /C %ROOT%\build\helpers\probackup.cmd || GOTO :ERROR +) + +IF "%~1"=="9" ( + TITLE Build PG_PROBACKUP installer + CMD.EXE /C %ROOT%\build\helpers\probackup_installer.cmd || GOTO :ERROR +) + GOTO :DONE :ERROR diff --git a/patches/pg_probackup/dirent.patch b/patches/pg_probackup/dirent.patch new file mode 100644 index 0000000..8b98082 --- /dev/null +++ b/patches/pg_probackup/dirent.patch @@ -0,0 +1,19 @@ +diff --git a/src/port/dirent.c b/src/port/dirent.c +index 7a91450..284bf27 100644 +--- a/src/port/dirent.c ++++ b/src/port/dirent.c +@@ -83,7 +83,13 @@ readdir(DIR *d) + d->handle = FindFirstFile(d->dirname, &fd); + if (d->handle == INVALID_HANDLE_VALUE) + { +- errno = ENOENT; ++ if (GetLastError() == ERROR_FILE_NOT_FOUND) ++ { ++ /* No more files, force errno=0 (unlike mingw) */ ++ errno = 0; ++ return NULL; ++ } ++ _dosmaperr(GetLastError()); + return NULL; + } + } diff --git a/wix/pg_probackup/Files_example.wxs b/wix/pg_probackup/Files_example.wxs new file mode 100644 index 0000000..5d3922e --- /dev/null +++ b/wix/pg_probackup/Files_example.wxs @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/wix/pg_probackup/Product.wxs b/wix/pg_probackup/Product.wxs new file mode 100644 index 0000000..d1aa64b --- /dev/null +++ b/wix/pg_probackup/Product.wxs @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + "")]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wix/pg_probackup/Product_separate.wxs b/wix/pg_probackup/Product_separate.wxs new file mode 100644 index 0000000..508e11e --- /dev/null +++ b/wix/pg_probackup/Product_separate.wxs @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wix/pg_probackup/RegenGuids.pl b/wix/pg_probackup/RegenGuids.pl new file mode 100644 index 0000000..fe80639 --- /dev/null +++ b/wix/pg_probackup/RegenGuids.pl @@ -0,0 +1,24 @@ +use Win32; + +my $filename = shift @ARGV; + +die "Usage: regenguids.pl \n\n" unless ($filename); + +sub MakeGuid { + my $u = Win32::GuidGen(); + $u =~ s/[{}]//g; + return $u; +} + +open(IN,"<$filename"); +open(OUT, ">$filename.out") || die "Could not open output file ($filename.out)!\n"; + +while() { + chomp(); + if(/(.*)([0-9A-Fa-f]{8}-?[0-9A-Fa-f]{4}-?[0-9A-Fa-f]{4}-?[0-9A-Fa-f]{4}-?[0-9A-Fa-f]{12})(.*)/) { + $newguid=MakeGuid(); + print OUT $1.$newguid.$3; + } else { print OUT $_ ;} + print OUT "\n"; +} + diff --git a/wix/pg_probackup/Variables.wxi b/wix/pg_probackup/Variables.wxi new file mode 100644 index 0000000..d9f61c1 --- /dev/null +++ b/wix/pg_probackup/Variables.wxi @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + diff --git a/wix/pg_probackup/background.bmp b/wix/pg_probackup/background.bmp new file mode 100644 index 0000000..f8489e0 Binary files /dev/null and b/wix/pg_probackup/background.bmp differ diff --git a/wix/pg_probackup/banner.bmp b/wix/pg_probackup/banner.bmp new file mode 100644 index 0000000..b677a20 Binary files /dev/null and b/wix/pg_probackup/banner.bmp differ diff --git a/wix/pg_probackup/genfilelist.pl b/wix/pg_probackup/genfilelist.pl new file mode 100644 index 0000000..2a889c7 --- /dev/null +++ b/wix/pg_probackup/genfilelist.pl @@ -0,0 +1,29 @@ +use Win32; +use File::Basename; + +sub usage +{ + die( "Usage: genfilelist.pl \n"); +} + + usage() + unless scalar(@ARGV) == 2; + +my $filename = $ARGV[1]; +open(OUT, ">>$filename") || die "Could not open output file ($filename)!\n"; + + +my @files = glob($ARGV[0]); +my $file2 = ""; + + foreach my $file (@files) { + + $file2 = basename($file); + $file2 =~ s/-//ig; + print OUT "\n"; + + + } + +close(OUT); +exit 0; diff --git a/wix/pg_probackup/genres.pl b/wix/pg_probackup/genres.pl new file mode 100644 index 0000000..f384986 --- /dev/null +++ b/wix/pg_probackup/genres.pl @@ -0,0 +1,48 @@ +use Win32; +use File::Basename; + +sub usage +{ + die( "Usage: genres.pl \nFor example:\ngenres.pl \"Pro database backup\" 2.0.26 dll"); +} + + usage() + unless scalar(@ARGV) == 3; + + AddResourceFile($ARGV[0], $ARGV[1], $ARGV[2]); + +exit 0; + + +sub AddResourceFile +{ + my ($desc, $ver, $type) = @_; + $ver =~ s/\./,/gm; + + my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = + localtime(time); + my $d = sprintf("%02d%03d", ($year - 100), $yday); + + print "Generating win32ver.rc\n"; + open(my $i, '<', 'win32ver_tmp.rc') + || die "Could not open win32ver_tmp.rc"; + open(my $o, '>', "win32ver.rc") + || die "Could not write win32ver.rc"; + my $icostr = $ico ? "IDI_ICON ICON \"$ico.ico\"" : ""; + while (<$i>) + { + s/FILEDESC/"$desc"/gm; + s/_ICO_/$icostr/gm; + #s/(VERSION.*),0/$1,$d/; + s/(VERSION ).*$/$1 $ver,$d/; + if ($type eq "dll") + { + s/VFT_APP/VFT_DLL/gm; + } + print $o $_; + } + close($o); + close($i); + + return; +} diff --git a/wix/pg_probackup/licence.rtf b/wix/pg_probackup/licence.rtf new file mode 100644 index 0000000..02dd165 Binary files /dev/null and b/wix/pg_probackup/licence.rtf differ diff --git a/wix/pg_probackup/readme.md b/wix/pg_probackup/readme.md new file mode 100644 index 0000000..7298862 --- /dev/null +++ b/wix/pg_probackup/readme.md @@ -0,0 +1,4 @@ +Use run.cmd for build pg_probackup with download source and binary fron repo.postgrespro.ru +Use build_separate.bat if you already have source and binary. You must set environment variables in this file. + + diff --git a/wix/pg_probackup/readme.txt b/wix/pg_probackup/readme.txt new file mode 100644 index 0000000..12d21bb --- /dev/null +++ b/wix/pg_probackup/readme.txt @@ -0,0 +1,52 @@ +Использование скриптов + +Используйте RUN.CMD для скачивания исходников и исполняемых файлов postgreSQL, скачивания и сборки pg_probackup +Для этого файла используйте переменные среды: + +--- stable или dev --- +SET ISDEV=1 для dev версии postgres +SET ISDEV= для стабильной версии postgres + +-- версия PostgreSQL --- +SET PG_MAJOR_VERSION=11 +SET PG_PATCH_VERSION=1.1 + +-- версия PRO продукта, используется для вычисления ветки реестра, куда записывается путь к PostgreSQL --- +SET PRODUCT_NAME=PostgresPro +или +SET PRODUCT_NAME=PostgresProEnterprise + +--- версия pg_probackup --- +SET APPVERSION=2.0.26 + + + +Используйте build_separate.bat для скачивания и сборки pg_probackup без загрузки postgreSQL + +В начале этого файла надо настроить переменные: + +--- путь к исходным кодам и к бинарным файлам PostgrSQL --- +SET PGDIRSRC=... +SET PGDIR=... + +--- Версию pg_probackup --- +SET APPVERSION=2.0.26 + +Для создания инсталлятора требуются следующие переменные среды: + +--- ветка реестра, в которую пишется путь к установке PostgresPro. --- +SET PG_REG_KEY=SOFTWARE\PostgresPro\X64\PostgresProEnterprise\11\Installations\postgresql-11 +(не используется при создании автономного инсталлятора) + +--- используется при сообщении, что инсталляция продукта не найдена: --- +SET PG_DEF_BRANDING=PostgresPro Enterprise 11 + +--- в этом случае используется только как первая часть в имени файла инсталлятора --- +SET PRODUCT_NAME=PostgresProEnterprise + +--- используется для имени фйла инсталлтора --- +SET BITS=64bit + +--- используется для имени фйла инсталлтора --- +SET PGVER=11.1.1 + diff --git a/wix/pg_probackup/run.cmd b/wix/pg_probackup/run.cmd new file mode 100644 index 0000000..bbac6e4 --- /dev/null +++ b/wix/pg_probackup/run.cmd @@ -0,0 +1,100 @@ +SET ZIP_PATH=C:\Program Files\7-Zip;C:\Program Files (x86)\7-Zip +SET MSYS2_PATH=C:\msys64\usr\bin +SET PATH=%PATH%;%ZIP_PATH%;%MSYS2_PATH%; +rem SET ISDEV=1 for dev version of postgres +rem SET ISDEV= for stable version of postgres +IF EXIST config.cmd ( +call config.cmd +GOTO :HAVECONFIG +) +rem PRODUCT_NAME may be PostgresProEnterprise or PostgresPro +IF "%PRODUCT_NAME%" == "" SET PRODUCT_NAME=PostgresPro +IF "%PG_MAJOR_VERSION%" == "" SET PG_MAJOR_VERSION=11 +IF "%PG_PATCH_VERSION%" == "" SET PG_PATCH_VERSION=1.1 +IF "%EDITION%" == "" SET EDITION=std +rem version of pg_probackup: +IF "%APPVERSION%" == "" SET APPVERSION=2.0.26 +IF "%ARCH%" == "" SET ARCH=X64 +:HAVECONFIG +SET COMPANY_NAME=PostgresPro +IF %ARCH% == X86 ( + SET BITS=32bit +) else ( + SET BITS=64bit +) + +ECHO %PG_PATCH_VERSION% | grep "^[0-9]." > nul && ( + SET PGVER=%PG_MAJOR_VERSION%.%PG_PATCH_VERSION% +) || ( + SET PGVER=%PG_MAJOR_VERSION%%PG_PATCH_VERSION% +) + +SET PG_INS_FILE=%PRODUCT_NAME%_%PGVER%_%BITS%_Setup.exe + +rem Set reg key +SET PRODUCT_DIR_REGKEY=SOFTWARE\%COMPANY_NAME%\%ARCH%\%PRODUCT_NAME%\%PG_MAJOR_VERSION% +SET PG_REG_KEY=%PRODUCT_DIR_REGKEY%\Installations\postgresql-%PG_MAJOR_VERSION% +rem echo PgVer=%PGVER% + +rem set URLS for downloading +SET PRODUCT=pgpro-%PG_MAJOR_VERSION% +IF "%PRODUCT_NAME%" == "PostgresProEnterprise" ( + SET PRODUCT=pgproee-%PG_MAJOR_VERSION% +) + +rem http://localrepo.l.postgrespro.ru/dev/ + +SET URL_PART_ONE=http://localrepo.l.postgrespro.ru/dev/%PRODUCT% +IF "%ISDEV%" == "" ( +SET URL_PART_ONE=http://repo.postgrespro.ru/%PRODUCT%-beta/ +) + +IF "%PG_MAJOR_VERSION%" == "9.6" SET PG_URL=%URL_PART_ONE%/src/postgrespro-%PGVER%.tar.bz2 +IF NOT "%PG_MAJOR_VERSION%" == "9.6" SET PG_URL=%URL_PART_ONE%/src/postgrespro-standard-%PGVER%.tar.bz2 + +SET PG_INS_URL=%URL_PART_ONE%/win/%PG_INS_FILE% +SET PG_DEF_BRANDING=PostgresPro%PG_MAJOR_VERSION% +IF "%PRODUCT_NAME%" == "PostgresProEnterprise" ( +SET PG_URL=%URL_PART_ONE%/src/postgrespro-enterprise-%PGVER%.tar.bz2 +SET PG_INS_URL=%URL_PART_ONE%/win/%PG_INS_FILE% +SET PG_DEF_BRANDING=PostgresProEnterprise%PG_MAJOR_VERSION% +) +IF "%PRODUCT_NAME%" == "PostgreSql" ( +SET PG_URL=https://ftp.postgresql.org/pub/source/v%PGVER%/postgresql-%PGVER%.tar.bz2 +SET PG_INS_URL=https://repo.postgrespro.ru/win/64/PostgreSQL_%PGVER%_64bit_Setup.exe +SET PG_DEF_BRANDING=PostgreSQL%PG_MAJOR_VERSION% +SET COMPANY_NAME=Postgres Professional +SET PRODUCT_DIR_REGKEY=SOFTWARE\Postgres Professional\%ARCH%\%PRODUCT_NAME%\%PG_MAJOR_VERSION% +SET PG_REG_KEY=SOFTWARE\Postgres Professional\%ARCH%\%PRODUCT_NAME%\%PG_MAJOR_VERSION%\Installations\postgresql-%PG_MAJOR_VERSION% +) +rem GOTO :TEST +echo Downloading sources... +wget --no-check-certificate %PG_URL% -O postgresql-%PGVER%.tar.bz2 || GOTO :ERROR +rm -rf ./postgresql +MKDIR .\postgresql +tar xf postgres*-%PGVER%.tar.bz2 -C ./postgresql || GOTO :ERROR +mv ./postgresql/*%PGVER%*/* ./postgresql/ + +rem patch for readdir +rem will removed in the next postgres version +rem IF "%PRODUCT_NAME%" == "PostgreSql" ( +rem CD postgresql +rem patch -f -p1 < ..\dirent.patch || GOTO :ERROR +rem cd .. +rem ) +echo Downloading bins... +wget --no-check-certificate %PG_INS_URL% -O setup-%PGVER%.exe || GOTO :ERROR +rm -rf ./setup +7z.exe x setup-%PGVER%.exe -o./setup || GOTO :ERROR +:TEST +SET PGDIRSRC=.././postgresql +SET PGDIR=.././setup + +call build_pro_backup.bat || GOTO :ERROR + +goto :DONE +:ERROR +ECHO Failed with error #%errorlevel%. +EXIT /b %errorlevel% +:DONE +ECHO Done. diff --git a/wix/pg_probackup/win32.ico b/wix/pg_probackup/win32.ico new file mode 100644 index 0000000..a58ee43 Binary files /dev/null and b/wix/pg_probackup/win32.ico differ diff --git a/wix/pg_probackup/win32ver.rc b/wix/pg_probackup/win32ver.rc new file mode 100644 index 0000000..925bd65 --- /dev/null +++ b/wix/pg_probackup/win32ver.rc @@ -0,0 +1,32 @@ +#include +#include "pg_config.h" + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 2,1,1,19132 + PRODUCTVERSION 2,1,1,19132 + FILEFLAGSMASK 0x17L + FILEFLAGS 0x0L + FILEOS VOS_NT_WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "000004b0" + BEGIN + VALUE "CompanyName", "Postgres Professional" + VALUE "FileDescription", "pg_probackup for PostgreSQL" + VALUE "FileVersion", PG_VERSION + VALUE "LegalCopyright", "Copyright (c) 2015-2019, Postgres Professional. Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group. Portions Copyright (c) 1994, Regents of the University of California." + + VALUE "ProductName", "Postgre Pro" + VALUE "ProductVersion", PG_VERSION + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0, 1200 + END +END + +IDI_ICON ICON "win32.ico" diff --git a/wix/pg_probackup/win32ver_tmp.rc b/wix/pg_probackup/win32ver_tmp.rc new file mode 100644 index 0000000..573d9da --- /dev/null +++ b/wix/pg_probackup/win32ver_tmp.rc @@ -0,0 +1,32 @@ +#include +#include "pg_config.h" + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 11,0,2,0 + PRODUCTVERSION 11,0,2,0 + FILEFLAGSMASK 0x17L + FILEFLAGS 0x0L + FILEOS VOS_NT_WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "000004b0" + BEGIN + VALUE "CompanyName", "Postgres Professional" + VALUE "FileDescription", FILEDESC + VALUE "FileVersion", PG_VERSION + VALUE "LegalCopyright", "Copyright (c) 2015-2019, Postgres Professional. Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group. Portions Copyright (c) 1994, Regents of the University of California." + + VALUE "ProductName", "Postgre Pro" + VALUE "ProductVersion", PG_VERSION + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0, 1200 + END +END + +IDI_ICON ICON "win32.ico"