1
0
mirror of https://github.com/pgbackrest/pgbackrest.git synced 2024-12-12 10:04:14 +02:00
pgbackrest/.cirrus.yml
David Steele f92ce674f7
Automatically create PostgreSQL version interfaces.
Maintaining the version interfaces was complicated by the fact that each interface needed to be in separate compilation unit to avoid type conflicts. This also meant that various build/test files needed to be updated to add the new interfaces.

Solve these problems by auto-generating all the interfaces into a single file. This is made possible by parsing defines and types out of the header files and creating macros to rename the types. At the end of the version interface everything is undef'd. Another benefit is that the auto-generated interfaces can be static and included directly into postgres/interface.c.

Since some code generation is now always required for tests, change --no-gen to --min-gen in test.pl.

It would also make sense to auto-generate the version defines in postgres/version.h, but that will be left for a future commit.
2022-06-06 13:52:56 -04:00

83 lines
3.4 KiB
YAML

# Cirrus CI Build Definitions
# ----------------------------------------------------------------------------------------------------------------------------------
# Build the branch if it is integration, a pull request, or ends in -ci/-cic (-cic targets only Cirrus CI)
only_if: $CIRRUS_BRANCH == 'integration' || $CIRRUS_PR != '' || $CIRRUS_BRANCH =~ '.*-ci$' || $CIRRUS_BRANCH =~ '.*-cic$'
# No auto-cancel on integration
auto_cancellation: $CIRRUS_BRANCH != 'integration'
# Arm64
# ----------------------------------------------------------------------------------------------------------------------------------
arm64_task:
arm_container:
image: ubuntu:20.04
cpu: 4
memory: 2G
install_script:
- apt-get update && apt-get install -y perl sudo locales
- sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
- dpkg-reconfigure --frontend=noninteractive locales
- update-locale LANG=en_US.UTF-8
- adduser --disabled-password --gecos "" testuser
- echo '%testuser ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
- chown -R testuser ${CIRRUS_WORKING_DIR?}
script:
- su - testuser -c "${CIRRUS_WORKING_DIR?}/test/ci.pl test --vm=none --sudo --no-tempfs --param=c-only --param=no-coverage"
# FreeBSD 12
# ----------------------------------------------------------------------------------------------------------------------------------
freebsd_12_task:
freebsd_instance:
image_family: freebsd-12-3
cpu: 4
memory: 4G
install_script: pkg install -y bash git postgresql-libpqxx pkgconf libxml2 gmake perl5 libyaml p5-YAML-LibYAML rsync meson
script:
- cd .. && perl ${CIRRUS_WORKING_DIR}/test/test.pl --min-gen --make-cmd=gmake --vm=none --vm-max=2 --no-coverage --no-valgrind --module=command --test=backup
debug_script:
- ls -lah ${CIRRUS_WORKING_DIR}
# FreeBSD 13
# ----------------------------------------------------------------------------------------------------------------------------------
freebsd_13_task:
freebsd_instance:
image_family: freebsd-13-0
cpu: 4
memory: 4G
install_script: pkg install -y bash git postgresql-libpqxx pkgconf libxml2 gmake perl5 libyaml p5-YAML-LibYAML rsync meson
script:
- cd .. && perl ${CIRRUS_WORKING_DIR}/test/test.pl --min-gen --make-cmd=gmake --vm=none --vm-max=2 --no-coverage --no-valgrind --module=command --test=backup
debug_script:
- ls -lah ${CIRRUS_WORKING_DIR}
# MacOS Monterey
# ----------------------------------------------------------------------------------------------------------------------------------
macos_monterey_task:
osx_instance:
image: monterey-xcode
environment:
LDFLAGS: -L/usr/local/opt/openssl@1.1/lib -L/usr/local/opt/libpq/lib -L/usr/local/opt/libxml2/lib -L/usr/local/opt/libyaml/lib
CPPFLAGS: -I/usr/local/opt/openssl@1.1/include -I/usr/local/opt/libpq/include -I/usr/local/opt/libxml2/include/libxml2 -I/usr/local/opt/libyaml/include
PERL5LIB: /usr/local/opt/perl5/lib/perl5
PKG_CONFIG_PATH: /usr/local/opt/libpq/lib/pkgconfig:/usr/local/opt/openssl@1.1/lib/pkgconfig
install_script:
- brew install -q pkg-config openssl@1.1 libpq libxml2 libyaml cpanm meson
- cpanm --local-lib=/usr/local/opt/perl5 install YAML::XS
script:
- cd .. && ${CIRRUS_WORKING_DIR}/test/test.pl --min-gen --vm=none --vm-max=2 --no-coverage --no-valgrind --module=command --test=backup
debug_script:
- ls -lah ${CIRRUS_WORKING_DIR}