mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2024-12-12 10:04:14 +02:00
6f562fba60
lcov does not seem to be very well maintained and is often not compatible with the version of gcc it ships with until a few months after a new distro is released. In any case, lcov is that not useful for us because it generates reports on all coverage while we are mainly interested in missing coverage during development. Instead use the JSON output generated by gcov to generate our minimal coverage report and metrics for the documentation. There are some slight differences in the metrics. The difference in the common module was due to a bug in the old code -- build/common was being added into common as well as being reported separately. The source of the two additional branches in the backup module is unknown but almost certainly down to how exclusions are processed with regular expressions. Since there is additional coverage rather than coverage missing this seems fine. Since this was pretty much a rewrite it was also a good time to migrate to C.
161 lines
8.5 KiB
Ruby
161 lines
8.5 KiB
Ruby
Vagrant.configure(2) do |config|
|
|
config.vm.provider :virtualbox do |vb|
|
|
vb.memory = 4096
|
|
vb.cpus = 8
|
|
end
|
|
|
|
# Increase disk size if the vagrant-disksize plugin is available. To install the plugin: vagrant plugin install vagrant-disksize
|
|
if Vagrant.has_plugin?('vagrant-disksize')
|
|
config.disksize.size = '64GB'
|
|
end
|
|
|
|
# Ubuntu 18.04
|
|
#
|
|
# Full development and test environment which should be used by default.
|
|
#-------------------------------------------------------------------------------------------------------------------------------
|
|
config.vm.define "default", primary: true do |default|
|
|
default.vm.box = "ubuntu/jammy64"
|
|
default.vm.box_version = "20220423.0.0"
|
|
|
|
default.vm.provider :virtualbox do |vb|
|
|
vb.name = "pgbackrest-test"
|
|
end
|
|
|
|
# Provision the VM
|
|
default.vm.provision "shell", inline: <<-SHELL
|
|
#-----------------------------------------------------------------------------------------------------------------------
|
|
echo 'Build Begin' && date
|
|
|
|
# Suppress "dpkg-reconfigure: unable to re-open stdin: No file or directory" warning
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
|
|
# Assign a host name
|
|
sed -i 's/^127\.0\.0\.1\t.*/127\.0\.0\.1\tlocalhost pgbackrest-test/' /etc/hosts
|
|
hostnamectl set-hostname pgbackrest-test
|
|
|
|
#-----------------------------------------------------------------------------------------------------------------------
|
|
echo 'Update Apt' && date
|
|
apt-get update
|
|
|
|
#-----------------------------------------------------------------------------------------------------------------------
|
|
echo 'Synchronize Date' && date
|
|
apt-get install -y ntpdate
|
|
ntpdate pool.ntp.org
|
|
|
|
#-----------------------------------------------------------------------------------------------------------------------
|
|
echo 'Use Google DNS' && date
|
|
echo 'supersede domain-name-servers 8.8.8.8;' >> /etc/dhcp/dhclient.conf
|
|
/etc/init.d/networking restart
|
|
|
|
# Set time sync settings so builds don't fail with clock skew errors. If a build does fail with "clock skew detected",
|
|
# rerun the following at the command line.
|
|
#-----------------------------------------------------------------------------------------------------------------------
|
|
echo 'Time Sync Settings' && date
|
|
sudo /etc/init.d/virtualbox-guest-utils stop
|
|
sudo /usr/sbin/VBoxService --timesync-set-on-restore --timesync-interval 5000 --timesync-set-threshold 1
|
|
|
|
# Create /tmp/pgbackrest and give ownership to root so we know unit tests are not writing there
|
|
#-----------------------------------------------------------------------------------------------------------------------
|
|
echo 'Create /tmp/pgbackrest owned by root' && date
|
|
sudo mkdir -p /tmp/pgbackrest
|
|
sudo chown root:root /tmp/pgbackrest
|
|
sudo chmod 700 /tmp/pgbackrest
|
|
|
|
# Mount tmpfs at /home/vagrant/test for faster testing
|
|
#-----------------------------------------------------------------------------------------------------------------------
|
|
echo 'Mount tmpfs' && date
|
|
sudo -u vagrant mkdir -p -m 770 /home/vagrant/test
|
|
echo 'tmpfs /home/vagrant/test tmpfs size=2560M 0 1' >> /etc/fstab
|
|
mount -a
|
|
|
|
#-----------------------------------------------------------------------------------------------------------------------
|
|
echo 'Install Perl Modules' && date
|
|
apt-get install -y libdbd-pg-perl libxml-checker-perl libyaml-perl
|
|
|
|
#-----------------------------------------------------------------------------------------------------------------------
|
|
echo 'Install Build Tools' && date
|
|
apt-get install -y devscripts build-essential lintian git cloc txt2man debhelper libssl-dev zlib1g-dev libperl-dev \
|
|
libxml2-dev liblz4-dev liblz4-tool libpq-dev autoconf-archive zstd libzstd-dev bzip2 libbz2-dev pkg-config \
|
|
libyaml-dev libc6-dbg valgrind meson ccache uncrustify libssh2-1-dev
|
|
|
|
#-----------------------------------------------------------------------------------------------------------------------
|
|
echo 'Install Docker' && date
|
|
curl -fsSL https://get.docker.com | sh
|
|
sudo usermod -aG docker vagrant
|
|
|
|
#-----------------------------------------------------------------------------------------------------------------------
|
|
echo 'Install Dev Utilities' && date
|
|
apt-get install -y vim htop jq
|
|
|
|
#-----------------------------------------------------------------------------------------------------------------------
|
|
# echo 'Install TeX Live' && date
|
|
# Not installed by default since latex is only needed for releases and PDF development/testing
|
|
# apt-get install -y --no-install-recommends texlive-latex-base texlive-latex-extra texlive-fonts-recommended
|
|
# apt-get install -y texlive-font-utils
|
|
|
|
#-----------------------------------------------------------------------------------------------------------------------
|
|
echo 'Build VM Images' && date
|
|
sudo su - vagrant -c '/home/vagrant/pgbackrest/test/test.pl --vm-build'
|
|
|
|
#-----------------------------------------------------------------------------------------------------------------------
|
|
echo 'Build End' && date
|
|
|
|
# Useful commands
|
|
#-----------------------------------------------------------------------------------------------------------------------
|
|
# Force remove all containers:
|
|
# docker rm -f $(docker ps -a -q)
|
|
# Force remove all images:
|
|
# docker rmi -f $(docker images -q)
|
|
SHELL
|
|
|
|
# Mount pgbackrest path for testing
|
|
default.vm.synced_folder "..", "/home/vagrant/pgbackrest"
|
|
end
|
|
|
|
# FreeBSD 12
|
|
#
|
|
# Basic environment to build pgBackRest.
|
|
#-------------------------------------------------------------------------------------------------------------------------------
|
|
config.vm.define "fb12", autostart: false do |fb12|
|
|
fb12.vm.box = "generic/freebsd12"
|
|
fb12.vm.box_version = "2.0.6"
|
|
|
|
fb12.vm.provider :virtualbox do |vb|
|
|
vb.name = "pgbackrest-test-fb12"
|
|
end
|
|
|
|
# Provision the VM
|
|
fb12.vm.provision "shell", inline: <<-SHELL
|
|
#-----------------------------------------------------------------------------------------------------------------------
|
|
echo 'Build Begin' && date
|
|
|
|
#-----------------------------------------------------------------------------------------------------------------------
|
|
echo 'Install Build Tools' && date
|
|
|
|
pkg install -y git postgresql-libpqxx pkgconf libxml2 gmake perl5 p5-YAML-LibYAML rsync
|
|
|
|
#-----------------------------------------------------------------------------------------------------------------------
|
|
echo 'Build End' && date
|
|
SHELL
|
|
end
|
|
|
|
# MacOS
|
|
#
|
|
# Basic environment to build/test pgBackRest using homebrew installed in the local user account.
|
|
#-------------------------------------------------------------------------------------------------------------------------------
|
|
# git clone --depth=1 https://github.com/Homebrew/brew ~/homebrew
|
|
# ~/homebrew/bin/brew install -q pkg-config openssl@1.1 libpq libxml2 libyaml cpanm meson
|
|
# ~/homebrew/bin/cpanm --force --local-lib=~/homebrew/perl5 install YAML::XS XML::Checker::Parser
|
|
#
|
|
# export PATH="${HOME?}/homebrew/bin:$PATH"
|
|
# export LDFLAGS="-L${HOME?}/homebrew/opt/openssl@1.1/lib -L${HOME?}/homebrew/opt/libpq/lib -L${HOME?}/homebrew/opt/libxml2/lib"
|
|
# export LDFLAGS="${LDFLAGS?} -L${HOME?}/homebrew/opt/libyaml/lib"
|
|
# export CPPFLAGS="-I${HOME?}/homebrew/opt/openssl@1.1/include -I/${HOME?}/homebrew/opt/libpq/include"
|
|
# export CPPFLAGS="${CPPFLAGS?} -I${HOME?}/homebrew/opt/libxml2/include/libxml2 -I/${HOME?}/homebrew/opt/libyaml/include"
|
|
# export PERL5LIB=~/homebrew/perl5/lib/perl5"${PERL5LIB:+:${PERL5LIB}}"
|
|
# export PKG_CONFIG_PATH=~/homebrew/opt/libpq/lib/pkgconfig:~/homebrew/opt/openssl@1.1/lib/pkgconfig
|
|
|
|
# Don't share the default vagrant folder
|
|
config.vm.synced_folder ".", "/vagrant", disabled: true
|
|
end
|