From b04d05504da0c9f296d3ea00aac0cf0bde1988c2bcc6ecdf68c5d4edc9b077d0 Mon Sep 17 00:00:00 2001 From: Martin Pluskal Date: Thu, 21 Feb 2019 08:59:16 +0000 Subject: [PATCH] Accepting request 677608 from home:bruno_friedmann:branches:server:database:postgresql - Include upstream patch 2cd204f.patch to fix issue#677 - Update to 2.10 version bug fixes + Add unimplemented S3 driver method required for archive-get. + Fix check for improperly configured pg-path. - Packaging: + Fix trailing space in changes (jengelh) + Use a factual description (jengelh) - Packaging: remove comments/remark fixed and merged issue #659 - Update to 2.08 version : bug fixes and improvement - Update spec (date and order) is ported to C OBS-URL: https://build.opensuse.org/request/show/677608 OBS-URL: https://build.opensuse.org/package/show/server:database:postgresql/pgbackrest?expand=0&rev=21 --- 2.09.tar.gz | 3 - 2.10.tar.gz | 3 + 2cd204f.patch | 61 +++++++++++++++++ pgbackrest.changes | 161 +++++++++++++++++++++++++-------------------- pgbackrest.spec | 36 ++++++---- 5 files changed, 177 insertions(+), 87 deletions(-) delete mode 100644 2.09.tar.gz create mode 100644 2.10.tar.gz create mode 100644 2cd204f.patch diff --git a/2.09.tar.gz b/2.09.tar.gz deleted file mode 100644 index d089a6d..0000000 --- a/2.09.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:eb5f8abc8601246f348d2682f18073a68a55468e6d33d4a96ba4b0eb5cfe3f51 -size 6426446 diff --git a/2.10.tar.gz b/2.10.tar.gz new file mode 100644 index 0000000..aa60867 --- /dev/null +++ b/2.10.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d04d2bb69842236a0394fbc54963b4af7d3ab6c3124bdf1e6692f6a7b0fc204 +size 6426455 diff --git a/2cd204f.patch b/2cd204f.patch new file mode 100644 index 0000000..5374abe --- /dev/null +++ b/2cd204f.patch @@ -0,0 +1,61 @@ +From 2cd204f38037f1465c84bb4e6b55893204ee8f93 Mon Sep 17 00:00:00 2001 +From: Stephen Frost +Date: Tue, 12 Feb 2019 14:59:51 +0200 +Subject: [PATCH] Change execRead() to return a size_t. + +execRead() should be returning a size_t, not a void. Thankfully, this isn't actually used and therefore shouldn't be an issue, but we should fix it anyway. + +Contributed by Stephen Frost. +--- + src/common/exec.c | 8 +++++--- + src/common/exec.h | 2 +- + 2 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/src/common/exec.c b/src/common/exec.c +index 84b1107ea..31d3dc444 100644 +--- a/src/common/exec.c ++++ b/src/common/exec.c +@@ -214,7 +214,7 @@ execCheck(Exec *this) + /*********************************************************************************************************************************** + Read from the process + ***********************************************************************************************************************************/ +-void ++size_t + execRead(Exec *this, Buffer *buffer, bool block) + { + FUNCTION_LOG_BEGIN(logLevelTrace); +@@ -226,9 +226,11 @@ execRead(Exec *this, Buffer *buffer, bool block) + ASSERT(this != NULL); + ASSERT(buffer != NULL); + ++ size_t result = 0; ++ + TRY_BEGIN() + { +- ioHandleRead(this->ioReadHandle, buffer, block); ++ result = ioHandleRead(this->ioReadHandle, buffer, block); + } + CATCH_ANY() + { +@@ -237,7 +239,7 @@ execRead(Exec *this, Buffer *buffer, bool block) + } + TRY_END(); + +- FUNCTION_LOG_RETURN_VOID(); ++ FUNCTION_LOG_RETURN(SIZE, result); + } + + /*********************************************************************************************************************************** +diff --git a/src/common/exec.h b/src/common/exec.h +index df7574010..2064c284c 100644 +--- a/src/common/exec.h ++++ b/src/common/exec.h +@@ -28,7 +28,7 @@ Exec *execNew(const String *command, const StringList *param, const String *name + Functions + ***********************************************************************************************************************************/ + void execOpen(Exec *this); +-void execRead(Exec *this, Buffer *buffer, bool block); ++size_t execRead(Exec *this, Buffer *buffer, bool block); + void execWrite(Exec *this, Buffer *buffer); + + /*********************************************************************************************************************************** diff --git a/pgbackrest.changes b/pgbackrest.changes index 123f0e5..b95fc6c 100644 --- a/pgbackrest.changes +++ b/pgbackrest.changes @@ -1,3 +1,18 @@ +------------------------------------------------------------------- +Wed Feb 20 08:15:24 UTC 2019 - Bruno Friedmann + +- Include upstream patch 2cd204f.patch to fix issue#677 + +------------------------------------------------------------------- +Sun Feb 17 10:02:49 UTC 2019 - Bruno Friedmann + +- Update to 2.10 version bug fixes + + Add unimplemented S3 driver method required for archive-get. + + Fix check for improperly configured pg-path. +- Packaging: + + Fix trailing space in changes (jengelh) + + Use a factual description (jengelh) + ------------------------------------------------------------------- Fri Feb 8 20:02:00 UTC 2019 - Bruno Friedmann @@ -9,40 +24,40 @@ Fri Feb 8 20:02:00 UTC 2019 - Bruno Friedmann + Add _DARWIN_C_SOURCE flag to Makefile for MacOS builds. + Update address lookup in C TLS client to use modern methods. + Include Posix-compliant header for strcasecmp() and fd_set. -- Packaging : remove comments/remark fixed and merged issue #659 +- Packaging: remove comments/remark fixed and merged issue #659 ------------------------------------------------------------------- Sat Jan 26 10:00:00 UTC 2019 - Bruno Friedmann -- Update to 2.08 version : bug fixes and improvement +- Update to 2.08 version : bug fixes and improvement See more information https://pgbackrest.org/release.html - Add libxml2-devel as buildrequires - Add a comment about gethostbyname() upstream issue #659 -- Update spec (date and order) +- Update spec (date and order) ------------------------------------------------------------------- Sat Dec 1 08:58:07 UTC 2018 - Bruno Friedmann - Re-add all needed Perl (upstream issue #629): not all the code - is ported to C + is ported to C ------------------------------------------------------------------- Tue Nov 20 13:36:49 UTC 2018 - Bruno Friedmann -- Update to 2.07 version : bug fixes and improvement +- Update to 2.07 version : bug fixes and improvement See more information https://pgbackrest.org/release.html ------------------------------------------------------------------- Sat Oct 27 20:12:17 UTC 2018 - Bruno Friedmann -- Bug fix and improvement 2.06 version +- Bug fix and improvement 2.06 version See more information https://pgbackrest.org/release.html - Packaging : Remove Requires perl, it not more used ------------------------------------------------------------------- Wed Oct 3 08:07:18 UTC 2018 - Bruno Friedmann -- Bug fix and improvement 2.05 version +- Bug fix and improvement 2.05 version See more information https://pgbackrest.org/release.html ------------------------------------------------------------------- @@ -51,7 +66,7 @@ Sat Jul 14 16:25:46 UTC 2018 - bruno@ioda-net.ch - Fix packaging : Avoid segv backtrace + Don't package and distribute perl or LibC They are already in final binary. - Ref https://github.com/pgbackrest/pgbackrest/issues/558 + Ref https://github.com/pgbackrest/pgbackrest/issues/558 + As a result : tests are no more usable, (only vagrant runs) use a simple call of the binary (pgbackrest version) to exclude futur backtrace @@ -61,16 +76,16 @@ Sat Jul 14 16:25:46 UTC 2018 - bruno@ioda-net.ch Wed Jul 11 07:49:49 UTC 2018 - bruno@ioda-net.ch - Critical bug fix release 2.04 (Backup Resume) - + IMPORTANT NOTE: This release fixes a critical bug in the backup - resume feature. All resumed backups prior to this release should - be considered inconsistent. + + IMPORTANT NOTE: This release fixes a critical bug in the backup + resume feature. All resumed backups prior to this release should + be considered inconsistent. See more information https://pgbackrest.org/release.html + Bug Fixes: - - Fix critical bug in resume that resulted in inconsistent - backups. A regression in v0.82 removed the timestamp comparison - when deciding which files from the aborted backup to keep on + - Fix critical bug in resume that resulted in inconsistent + backups. A regression in v0.82 removed the timestamp comparison + when deciding which files from the aborted backup to keep on resume. - - Fix error in selective restore when only one user database + - Fix error in selective restore when only one user database exists in the cluster. - Fix non-compliant ISO-8601 timestamp format in S3 authorization headers. AWS and some gateways were tolerant of space rather than @@ -78,16 +93,16 @@ Wed Jul 11 07:49:49 UTC 2018 - bruno@ioda-net.ch + Features: - PostgreSQL 11 Beta 2 support. + Improvements: - - Improve the HTTP client to set content-length to 0 when not - specified by the server. S3 (and gateways) always set + - Improve the HTTP client to set content-length to 0 when not + specified by the server. S3 (and gateways) always set content-length or transfer-encoding but HTTP 1.1 does not require it and proxies (e.g. HAProxy) may not include either. - Set search_path = 'pg_catalog' on PostgreSQL connections + Documentation Improvements: - - Create a new section to describe building pgBackRest and + - Create a new section to describe building pgBackRest and build on a separate host. - Add sample S3 policy to restrict bucket privileges. -- Packaging : +- Packaging : + Explicitly requires all perl deps + Define make_build for 42.3 compilation @@ -97,7 +112,7 @@ Mon May 28 08:21:30 UTC 2018 - bruno@ioda-net.ch - Urgent fix : add perl as BuildRequires and Requires to force presence of libperl.so : Otherwise pgbackrest binary can't find it -- Spec : use %make_build macros +- Spec : use %make_build macros ------------------------------------------------------------------- Wed May 23 09:55:27 UTC 2018 - bruno@ioda-net.ch @@ -105,10 +120,10 @@ Wed May 23 09:55:27 UTC 2018 - bruno@ioda-net.ch - Update release 2.03 version + Bug Fixes: - Fix potential buffer overrun in error message handling. - - Fix archive write lock being taken for the synchronous + - Fix archive write lock being taken for the synchronous archive-get command. + Improvements: - - Embed exported C functions and Perl modules directly into + - Embed exported C functions and Perl modules directly into the pgBackRest executable. - Use time_t instead of __time_t for better portability. - Print total runtime in milliseconds at command end. @@ -120,7 +135,7 @@ Thu May 10 10:12:23 UTC 2018 - bruno@ioda-net.ch Parallel Asynchronous Archive Get and Configuration Includes Released May 6, 2018 + Bug Fixes: - - Fix directory syncs running recursively when only the + - Fix directory syncs running recursively when only the specified directory should be synced. - Fix archive-copy throwing "path not found" error for incr/diff backups. @@ -129,32 +144,32 @@ Thu May 10 10:12:23 UTC 2018 - bruno@ioda-net.ch - Fix delta restore failing when a linked file is missing. - Fix rendering of key/value and list options in help. + Features: - - Add asynchronous, parallel archive-get. This feature maintains + - Add asynchronous, parallel archive-get. This feature maintains a queue of WAL segments to help reduce latency when PostgreSQL requests a WAL segment with restore_command. - Add support for additional pgBackRest configuration files in the - directory specified by the --config-include-path option. - Add --config-path option for overriding the default base path + directory specified by the --config-include-path option. + Add --config-path option for overriding the default base path of the --config and --config-include-path option. - Add repo-s3-token option to allow temporary credentials tokens to be configured. pgBackRest currently has no way to request new - credentials so the entire command (e.g. backup, restore) must + credentials so the entire command (e.g. backup, restore) must complete before the credentials expire. + Improvements: - Update the archive-push-queue-max, manifest-save-threshold, and buffer-size options to accept values in KB, MB, GB, TB, PB where the multiplier is a power of 1024. - - Make backup/restore path sync more efficient. Scanning the - entire directory can be very expensive if there are a lot of + - Make backup/restore path sync more efficient. Scanning the + entire directory can be very expensive if there are a lot of small tables. The backup manifest contains the path list so use it to perform syncs instead of scanning the backup/restore path - - Show command parameters as well as command options in initial + - Show command parameters as well as command options in initial info log message. - - Rename archive-queue-max option to archive-push-queue-max to - avoid confusion with the new archive-get-queue-max option. + - Rename archive-queue-max option to archive-push-queue-max to + avoid confusion with the new archive-get-queue-max option. The old option name will continue to be accepted. + Documentation Bug Fixes: - - Update docs with 32-bit support and caveats. + - Update docs with 32-bit support and caveats. 32-bit support was added in v1.26. + Documentation Improvements: - Add monitoring examples using PostgreSQL and jq. @@ -162,28 +177,28 @@ Thu May 10 10:12:23 UTC 2018 - bruno@ioda-net.ch - Remove documentation info --output=json as experimental. - Update out-of-date description for the spool-path option. + Test Suite Features: - - Use lcov for C unit test coverage reporting. Switch from - Devel::Cover because it would not report on branch coverage + - Use lcov for C unit test coverage reporting. Switch from + Devel::Cover because it would not report on branch coverage for reports converted from gcov. Incomplete branch coverage - for a module now generates an error. Coverage of unit tests + for a module now generates an error. Coverage of unit tests is not displayed in the report unless they are incomplete for - either statement or branch coverage. + either statement or branch coverage. - Changes of previous 2.01 version from March 6th 2018 + Bug Fixes: - Fix --target-action and --recovery-option options being reported as invalid when restoring with --type=immediate. - - Immediately error when a secure option (e.g. repo1-s3-key) is - passed on the command line. Since pgBackRest would not pass + - Immediately error when a secure option (e.g. repo1-s3-key) is + passed on the command line. Since pgBackRest would not pass secure options on to sub-processes an obscure error was thrown. The new error is much clearer and provides hints about how to fix - the problem. Update command documentation to omit secure options + the problem. Update command documentation to omit secure options that cannot be specified on the command-line. - Fix issue passing --no-config to embedded Perl. - - Fix issue where specifying log-level-stderr > warn would cause a - local/remote process to error on exit due to output found on + - Fix issue where specifying log-level-stderr > warn would cause a + local/remote process to error on exit due to output found on stderr when none was expected. The max value for a local/remote process is now error. - - Fix manifest test in the check command when tablespaces are + - Fix manifest test in the check command when tablespaces are present. + Improvements: - Error when multiple arguments are set in the config file for an @@ -196,14 +211,14 @@ Thu May 10 10:12:23 UTC 2018 - bruno@ioda-net.ch - Remove references to the C library being optional. + Test Suite Features: - Add CentOS/RHEL package builds. - - Use clang for static code analysis. Nothing found initially + - Use clang for static code analysis. Nothing found initially except for some functions that should have been marked __noreturn__. ------------------------------------------------------------------- Fri Mar 9 15:16:24 UTC 2018 - bruno@ioda-net.ch -- Packaging : +- Packaging : + modernize spec with spec-cleaner -m + remove pgbackrest-release-1.00_datadir.patch pgbackrest is now written in C @@ -211,72 +226,72 @@ Fri Mar 9 15:16:24 UTC 2018 - bruno@ioda-net.ch + Adjust new parameter name in pgbackrest-conf.patch - Update to new 2.0 version + Features: - The archive-push command is now partially coded in C which - allows the PostgreSQL archive_command to run significantly - faster when processing status messages from the asynchronous + The archive-push command is now partially coded in C which + allows the PostgreSQL archive_command to run significantly + faster when processing status messages from the asynchronous archive process. (Reviewed by Cynthia Shang.) + Improvements: - Improve check command to verify that the backup manifest can be built. (Contributed by Cynthia Shang.) - - Improve performance of HTTPS client. Buffering now takes the + - Improve performance of HTTPS client. Buffering now takes the pending bytes on the socket into account (when present) rather than relying entirely on select(). In some instances the final bytes would not be flushed until the connection was closed. - - Improve S3 delete performance. The constant S3_BATCH_MAX had - been replaced with a hard-coded value of 2, probably during + - Improve S3 delete performance. The constant S3_BATCH_MAX had + been replaced with a hard-coded value of 2, probably during testing. - - Allow any non-command-line option to be reset to default on - the command-line. This allows options in pgbackrest.conf to be - reset to default which reduces the need to write new config + - Allow any non-command-line option to be reset to default on + the command-line. This allows options in pgbackrest.conf to be + reset to default which reduces the need to write new config files for specific needs. - - The C library is now required. This eliminates conditional + - The C library is now required. This eliminates conditional loading and eases development of new library features. - The pgbackrest executable is now a C binary instead of Perl. - This allows certain time-critical commands (like async + This allows certain time-critical commands (like async archive-push) to run more quickly. - Rename db-* options to pg-* and backup-* options to repo-* to - improve consistency. repo-* options are now indexed although + improve consistency. repo-* options are now indexed although currently only one is allowed. ** This imply you need to revisit your pgbackrest.conf ** -- Packaging : +- Packaging : + Use make install (now fixed upstream) for bin - + ------------------------------------------------------------------- Sun Feb 4 17:14:16 UTC 2018 - bruno@ioda-net.ch - Upgrade to 1.28 bugfix version + Bug Fixes: - - Fixed inability to restore a single database contained in a + - Fixed inability to restore a single database contained in a tablespace using --db-include. (Fixed by Cynthia Shang.) - - Ensure latest db-id is selected on when matching archive.info - to backup.info. This provides correct matching in the event - there are system-id and db-version duplicates - (e.g. after reverting a pg_upgrade). + - Ensure latest db-id is selected on when matching archive.info + to backup.info. This provides correct matching in the event + there are system-id and db-version duplicates + (e.g. after reverting a pg_upgrade). (Fixed by Cynthia Shang. Reported by Adam K. Sumner.) - - Fixed overly chatty error message when reporting an invalid + - Fixed overly chatty error message when reporting an invalid command. (Reported by Jason O'Donnell.) + Features: - Add stanza-delete command to cleanup unused stanzas. + Add stanza-delete command to cleanup unused stanzas. (Contributed by Cynthia Shang. Suggested by Magnus Hagander.) + Improvements: - Improve stanza-create command so that it does not error when - the stanza already exists. (Contributed by Cynthia Shang.) + Improve stanza-create command so that it does not error when + the stanza already exists. (Contributed by Cynthia Shang.) ------------------------------------------------------------------- Thu Feb 1 13:20:00 UTC 2018 - bruno@ioda-net.ch -- Packaging : +- Packaging : + Fix wrong requirement of previous version, now use correct %perl_requires, add openssl-devel for crytpo on libc - + Add pgbackrest-conf.patch : a minimal working configuration file + + Add pgbackrest-conf.patch : a minimal working configuration file + Build pgbackrest-libc allowing crypto and checksum + Added %check section + Rework install and file section (copy of pgdg packaging and use of correct %perl macros + Disable build on i586 pgBackRest need perl with 64bit integer - support. see upstream issue + support. see upstream issue https://github.com/pgbackrest/pgbackrest/issues/478 - + use %_localstatedir/lib as %_sharedstatedir is broken on Leap + + use %_localstatedir/lib as %_sharedstatedir is broken on Leap 42.x and some SLE12 ------------------------------------------------------------------- @@ -303,7 +318,7 @@ Thu Aug 3 17:42:43 UTC 2017 - mrueckert@suse.de ------------------------------------------------------------------- Tue Mar 21 11:04:04 UTC 2017 - bruno@ioda-net.ch -- update to 1.17 +- update to 1.17 https://github.com/pgbackrest/pgbackrest/releases/tag/release%2F1.17 https://github.com/pgbackrest/pgbackrest/releases/tag/release%2F1.16 https://github.com/pgbackrest/pgbackrest/releases/tag/release%2F1.15 diff --git a/pgbackrest.spec b/pgbackrest.spec index 883cc4b..750298f 100644 --- a/pgbackrest.spec +++ b/pgbackrest.spec @@ -2,6 +2,7 @@ # spec file for package pgbackrest # # Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 Ioda-Net Sàrl, Charmoille, Switzerland. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -22,8 +23,7 @@ %endif Name: pgbackrest -# Nobody can stop upstream to be too creative ! -Version: 2.09 +Version: 2.10 Release: 0 Summary: Reliable PostgreSQL Backup & Restore License: MIT @@ -31,6 +31,9 @@ Group: Productivity/Databases/Tools URL: http://www.pgbackrest.org Source: https://github.com/pgbackrest/pgbackrest/archive/release/%{version}.tar.gz Source1: pgbackrest-conf.patch +# Trimmed Upstream patch fix return void (remove doc part) +# https://github.com/pgbackrest/pgbackrest/commit/2cd204f.patch +Patch0: 2cd204f.patch BuildRequires: libxml2-devel BuildRequires: openssl-devel BuildRequires: perl @@ -50,18 +53,29 @@ ExclusiveArch: do_not_build %endif %description -pgBackRest aims to be a simple, reliable backup and restore system that can -seamlessly scale up to the largest databases and workloads. +pgBackRest aims to be a simple, reliable backup and restore system for +PostgreSQL that can seamlessly scale up to the largest databases and +workloads. -Instead of relying on traditional backup tools like tar and rsync, pgBackRest -implements all backup features internally and uses a custom protocol for -communicating with remote systems. Removing reliance on tar and rsync allows -for better solutions to database-specific backup challenges. The custom remote -protocol allows for more flexibility and limits the types of connections that -are required to perform a backup which increases security. +The following features are available: +- Parallel backup & restore +- Local or remote operation +- Full, incremental, differential backups +- Backup rotation & archive expiration +- Backup integrity +- Page checksums +- Backup resume +- Streaming compression & checksums +- Delta restore +- Parallel, asynchronous WAL push & get +- Tablespace & link support +- Amazon S3 support +- Encryption +- Compatibility with PostgreSQL >= 8.3 %prep %setup -q -n %{name}-release-%{version} +%patch0 -p1 %build # TODO upstream doesn't care about RPM_OPT_FLAGS @@ -80,7 +94,7 @@ make install -C src DESTDIR=%{buildroot} %check # Tests are only available with Vagrant # We just test that the binary works. -%{buildroot}/%{_bindir}/%{name} version +%{buildroot}/%{_bindir}/%{name} version || exit 1 %files %defattr(-,root,root)