diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000000..c25c0edfe3851 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,18 @@ +language: c +compiler: gcc +dist: xenial +addons: + apt: + packages: + - libreadline-dev + - zlib1g-dev +install: + - curl -L https://cpanmin.us | perl - App::cpanminus + - ~/perl5/bin/cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib) + - ~/perl5/bin/cpanm IPC::Run + - ~/perl5/bin/cpanm Test::More + - ~/perl5/bin/cpanm Time::HiRes +script: + - export CFLAGS="-Og" + - ./configure --enable-debug --enable-cassert --enable-depend --enable-tap-tests BISONFLAGS="-v" + - make check-world diff --git a/README.md b/README.md new file mode 100644 index 0000000000000..ca95d1e4ac3ee --- /dev/null +++ b/README.md @@ -0,0 +1,33 @@ +# PostgreSQL mirror +[![Travis-ci Status](https://travis-ci.com/postgrespro/postgres.svg?branch=master_ci)](https://travis-ci.com/postgrespro/postgres) +[![Build status](https://ci.appveyor.com/api/projects/status/24ye5umhokcdyr90/branch/master_ci?svg=true)](https://ci.appveyor.com/project/ololobus/postgres-95nau/branch/master_ci) + +Involves automatic builds of PRs/commits on Linux (Travis-CI) and Windows (Appveyor): + * Linux: full `make check-world` + * Windows: only build + `make check` + +These checks are very similar to [cfbot](https://github.com/postgresql-cfbot) builds. + +If you want to verify your patch set before sending it to hackers, then just send a PR with your changes to the branch [master_ci](https://github.com/postgrespro/postgres/tree/master_ci) from any other postgres fork across GitHub. [See example](https://github.com/postgrespro/postgres/pull/3). + +Branch [master](https://github.com/postgrespro/postgres/tree/master) is left intact for convinience. Default branch is [master_ci](https://github.com/postgrespro/postgres/tree/master_ci) now, but **do not push or commit anything there**. To update [master_ci](https://github.com/postgrespro/postgres/tree/master_ci) you should add `upstream` remote first (you have to do it only once): + +```shell +git remote add upstream git@github.com:postgres/postgres.git +``` + +Then update `master` branch: +```shell +git checkout master +git pull --rebase upstream master +git push -f origin master +``` + +And finally update `master_ci` branch: +```shell +git checkout master_ci +git pull --rebase upstream master +git push -f origin master_ci +``` + +For original PostgreSQL readme [refer to README file](README). diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000000000..6bd1f83de56a9 --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,32 @@ +skip_branch_with_pr: true +shallow_clone: true + +image: + - Visual Studio 2015 + +install: + - appveyor-retry cinst winflexbison + - '"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64' + - '"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86_amd64' + +before_build: + - rename c:\ProgramData\chocolatey\bin\win_flex.exe flex.exe + - rename c:\ProgramData\chocolatey\bin\win_bison.exe bison.exe + # - cpan App::cpanminus + # - cpanm CPAN + # - cpanm Test::More + # - cpanm Time::HiRes + # - cpanm --notest --no-prompt -f IPC::Run # There are some problems with running IPC::Run tests on install + - perl buildsetup.pl + +build: + project: pgsql.sln + +test_script: + - cd src\tools\msvc && vcregress check #&& vcregress bincheck + +on_failure: + - perl dumpregr.pl + +configuration: + - Release diff --git a/buildsetup.pl b/buildsetup.pl new file mode 100644 index 0000000000000..5f43e51ce2d2d --- /dev/null +++ b/buildsetup.pl @@ -0,0 +1,42 @@ +# First part of postgres build.pl, just doesn't run msbuild + +use strict; + +use File::Copy; + +BEGIN +{ + + chdir("../../..") if (-d "../msvc" && -d "../../../src"); + +} + +use lib "src/tools/msvc"; + +use Cwd; + +use Mkvcbuild; + +# buildenv.pl is for specifying the build environment settings +# it should contain lines like: +# $ENV{PATH} = "c:/path/to/bison/bin;$ENV{PATH}"; + +if (-e "src/tools/msvc/buildenv.pl") +{ + do "src/tools/msvc/buildenv.pl"; +} +elsif (-e "./buildenv.pl") +{ + do "./buildenv.pl"; +} + +copy("config.pl", "src/tools/msvc/config.pl"); + +# set up the project +our $config; +do "config_default.pl"; +do "config.pl" if (-f "src/tools/msvc/config.pl"); + +# print "PATH: $_\n" foreach (split(';',$ENV{PATH})); + +Mkvcbuild::mkvcbuild($config); diff --git a/config.pl b/config.pl new file mode 100644 index 0000000000000..184855c54fb79 --- /dev/null +++ b/config.pl @@ -0,0 +1,32 @@ +# Configuration arguments for vcbuild. +use strict; +use warnings; + +our $config = { + asserts => 1, # --enable-cassert + # float4byval=>1, # --disable-float4-byval, on by default + + # float8byval=> $platformbits == 64, # --disable-float8-byval, + # off by default on 32 bit platforms, on by default on 64 bit platforms + + # blocksize => 8, # --with-blocksize, 8kB by default + # wal_blocksize => 8, # --with-wal-blocksize, 8kB by default + # wal_segsize => 16, # --with-wal-segsize, 16MB by default + ldap => 1, # --with-ldap + extraver => undef, # --with-extra-version= + gss => undef, # --with-gssapi= + icu => undef, # --with-icu= + nls => undef, # --enable-nls= + tap_tests => 1, # --enable-tap-tests + tcl => undef, # --with-tcl= + perl => undef, # --with-perl + python => undef, # --with-python= + openssl => undef, # --with-openssl= + uuid => undef, # --with-ossp-uuid + xml => undef, # --with-libxml= + xslt => undef, # --with-libxslt= + iconv => undef, # (not in configure, path to iconv) + zlib => undef # --with-zlib= +}; + +1; diff --git a/dumpregr.pl b/dumpregr.pl new file mode 100644 index 0000000000000..f0bd624bba025 --- /dev/null +++ b/dumpregr.pl @@ -0,0 +1,21 @@ +use strict; +use warnings FATAL => qw(all); + +use File::Find; + +my $Target = "regression.diffs"; + +find(\&dump, "src"); + +sub dump { + if ($_ eq $Target) { + my $path = $File::Find::name; + print "=== \$path ===\\n"; + open(my $fh, "<", $_) || die "wtf"; + for (1..1000) { + my $line = <$fh>; + last unless defined $line; + print $line; + } + } +}